間違った種類の引用符を使用しています。
一重引用符ではなく逆引用符を使用して、実行中のプログラムを引数とし、コンテンツを 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