GNU/Linux >> Linux の 問題 >  >> Linux

bash スクリプト ループ内の cat ステートメントの出力を出力する

間違った種類の引用符を使用しています。

一重引用符ではなく逆引用符を使用して、実行中のプログラムを引数とし、コンテンツを forloop にパイプアウトする必要があります。

for tbl in `cat /tmp/tables` 
do 
    echo "$tbl"
done

また、読みやすくするために (bash を使用している場合)、次のように記述できます

for tbl in $(cat /tmp/tables) 
do 
    echo "$tbl"
done

各行を取得することが期待される場合 (上記の for ループは各単語を取得します)、 xargs を使用する方がよい場合があります。 、このように

cat /tmp/tables | xargs -L1 echo

またはループとして

cat /tmp/tables | while read line; do echo "$line"; done

一重引用符はバッククォートにする必要があります:

for tbl in `cat /etc/tables`

ただし、これは出力/入力を行単位ではなく単語単位で取得します。行ごとに処理するには、次のようにしてください:

cat /etc/tables | while read line
    echo $line
done

Linux
  1. Bash Echoコマンドライン自体で実行されるコマンドライン(スクリプトではない)?

  2. ターミナルでループバッシュスクリプトを停止する方法は?

  3. Bashスクリプト:コマンド出力の各行を配列内の値に割り当てる方法は?

  1. Bashシェルスクリプトで改行をエコーする方法

  2. bash シェル スクリプトを別のコマンド ライン プログラムと対話させることは可能ですか?

  3. Bashスクリプトで1行ずつ読む

  1. Linux bashでphpスクリプト(php関数)を実行する

  2. bash スクリプトでの ENTER キー押下のシミュレート

  3. bash で、最後の stdout をエコー/印刷する方法はありますか? stdout が割り当てられる変数はありますか?