パイプの使い方(cmd接続) [閉じる]

パイプの使い方(cmd接続) [閉じる]

ルートモードで「|」コマンドの実行中に問題が発生しました。コマンドは次のとおりです。

cat xyz.sh | chmod 744 xyz.sh | echo "hello" > xyz.sh

以下を使用してこのコマンドを実行するとき./xyz.sh、エラーが発生しました

./xyz.sh: line 1: hello: command not found

私を指定してください。何かが間違っていたらどうしよう!

答え1

まず、理解する必要があります。パイプラインとは何ですか?:

パイプラインは、制御演算子で区切られた1つ以上のコマンドシーケンスです|。最後のコマンドを除く各コマンドに対して、シェルはコマンドの標準出力を次のコマンドの標準入力に接続する必要があります。

パイプラインでは、次のことが発生します。

  1. cat内容をxyz.sh次のコマンドの標準入力に送信します。
  2. chmodそのデータを受け取りますが、私が知っている限り、そのデータで何もしません。代わりに、次のコマンドの権限を変更し、標準xyz.sh入力には何も送信しません。
  3. echoecho何も受信されませんが、標準入力は最初から読み取られないため重要ではありません。 〜のようにスチールドライバーecho内容を単語で上書きしてください。xyz.shhello

その後、実行しようとすると、xyz.shシェルが見つけた唯一の文は、コマンドで実行しようhelloとします。インストールされたコマンドがhelloないため、エラーが発生します。hellocommand not found

関連情報