私は現在、プロセスで複数のシェルコマンドを実行する必要があるcentos 7仮想マシンでPythonスクリプトを作成しています。そのタスクを実行するライブラリを見つけましたが、そのうちの1つでエラーが発生しました。このコマンドはテキストファイルから受け取ったので、実際にそのコマンドが何をしているのかわかりません。私は単純なことを理解していますが、これは私のレベルを超えています。エラーが発生する行は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
私は彼らがリンカードのバイナリを使用しているので、アプリケーションに固有であることがわかります。その場合は、そのリポジトリに文書が見つからないため、文書をどこで見つけることができるかを調べる必要があります(だから最初にここに来ました)。
編集:これはスクリプトで発生するエラーです。
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
使った実行機能ほとんどのシェルコマンドを実行します。したがって、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は、私が事前に知っていたら、最初に見たところです。