幫助剖析與 LinkerD 一起使用的 bash 命令

幫助剖析與 LinkerD 一起使用的 bash 命令

我目前正在 centos 7 虛擬機器上編寫一個 python 腳本,該腳本必須在此過程中執行幾個 shell 命令。我找到了一個可以完成這項工作的庫,但我在其中一個庫上遇到了錯誤。我從文字檔案中獲得了這些命令,所以我實際上不知道它們的作用。簡單的我都懂,但是這些都超出了我的水平。由於只有 2 行出現錯誤,我知道這不是腳本本身的問題,而是我如何使用它的問題。./linkerd連結器的二進位文件,而 linkerd_images.txt 有一個圖片清單:

./linkerd install --ha --ignore-cluster | grep image: | grep linkerd | sed -e 's/^ .*images: //' | sort | uniq >> linkerd_images.txt
./linkerd viz install --ha --skip-checks | grep images: | sed -e 's/^ .*images: //' | sort | uniq >> linkerd_images.txt

我確實意識到,由於它們使用 linkerd 的二進位文件,因此它們對於應用程式來說可能是唯一的。如果是這樣的話,那麼我必須弄清楚在哪裡可以找到文檔,因為我在他們的存儲庫上找不到它(這就是為什麼我首先來到這裡)

編輯:這是我在腳本中遇到的錯誤:

UnicodeDecodeError: 'utf-8' codec: can't decode byte 0xe2 in position 49: Invalid continuation byte

如果我在終端機中單獨運行第一個命令,我會得到:

sed: -e expression #1, char 1: unknown command: '[Question Mark Symbol]'

我不太擔心錯誤本身,因為我並不真正期待我的 python 程式碼得到直接答案。我只是想了解命令本身對所有奇特字符的作用。

我被要求添加 python 程式碼。我用的asyncio運行函數運行大多數 shell 命令。所以Python程式碼本身很簡單:

asyncio.run(run(
     """./linkerd install --ha --ignore-cluster | grep image: | grep linkerd | sed -e 's/^ .*images: //' | sort | uniq >> linkerd_images.txt"""))

我還檢查了 linkerd 二進位文件,它看起來確實像一個 json 文件。

答案1

這是我找到的答案

問題不在於插入符號,而是撇號。給我命令的人是用法語鍵盤輸入的。由於它在我的工作電腦上,因此我透過查看另一個畫面在此輸入了它,因此我不假思索地重新輸入了正確的撇號。現在我已經研究了 sed 的錯誤及其含義,它變得更有意義了。sed -e expression #1是之後的第一個單字-e(在本例中為's/^)。'如果我事先知道的話,Char #1 就是我最初應該查看的地方。

相關內容