この特定のbashスクリプトでこのパイプコマンドが機能しないのはなぜですか?

この特定のbashスクリプトでこのパイプコマンドが機能しないのはなぜですか?

pipeコマンドを使用した後、スクリプトはtest.sh機能しません。結果は何も表示されません。なぜ?

#!/bin/bash

fun=$( echo $1 )
echo "$fun"

コマンドは次のとおりです。

$ echo 1 | ./test.sh

ベストアンサー1

スチールドライバーが正しい。あなたがしなければならないことは:

  1. 標準入力を読み取るには、次のコマンドを使用します。

    #!/bin/bash
    
    fun=$(cat)
    echo "$fun"  
    

    または簡単に:

    #!/bin/bash
    
    cat
    
  2. または、標準入力を位置引数に変換するには、次のようにします。xargs:

    $ echo 1 | xargs ./test.sh
    
  3. または、スクリプトを使用する方法(コード化されているように)で使用してください。

    ./test.sh 1
    

おすすめ記事