Používáte nesprávný typ uvozovek.
Chcete-li, aby argument byl spuštěný program a přesouval obsah do forloopu, musíte použít zadní uvozovky místo jednoduchých uvozovek.
for tbl in `cat /tmp/tables`
do
echo "$tbl"
done
Také pro lepší čitelnost (pokud používáte bash) jej můžete napsat jako
for tbl in $(cat /tmp/tables)
do
echo "$tbl"
done
Pokud je vaším očekáváním získat každý řádek (výše uvedené smyčky for vám poskytnou každé slovo), možná pro vás bude lepší použít xargs
, takhle
cat /tmp/tables | xargs -L1 echo
nebo jako smyčka
cat /tmp/tables | while read line; do echo "$line"; done
Jednoduché uvozovky by měly být obrácené:
for tbl in `cat /etc/tables`
Ačkoli to nezíská výstup/vstup po řádcích, ale po slovech. Chcete-li zpracovat řádek po řádku, měli byste zkusit něco jako:
cat /etc/tables | while read line
echo $line
done