为什么 bash 脚本中的 while 循环在第一行之后停止

Why does the while loop in that bash script stop after the first line

我正在使用 bash 脚本逐步浏览文件列表。

但是:尽管“$tempdat”中的列表有 10 行长,但它总是在第一个循环后停止。

while IFS= read -r zeile; do
 # Zielsteuerung
 quelle=$(awk -F\/ '{print }')
 if [[ "$quelle" == "foo" ]]; then
   do that
 else
   do s.th. else
 fi
 rsync somefiles
done < "$tempdat"

经过一番搜索发现错误,awk不正确

quelle=$(echo "$zeile"|awk -F\/ '{print }')

但是:为什么这个错误会阻止循环完成?也许有更多 bash 洞察力的人可以很好地启发我。 :-)

awk 正在消耗循环条件中用于 read 的所有数据。而不是使用 awk 来尝试解析该行,您似乎打算这样做:

while IFS=/ read -r a quelle b; do

并将文件的第二列读入变量quelle

你也可以这样写:

quelle=$(echo "$zeile" | awk -F\/ '{print }')

但让 read 为您拆分字段通常是最佳做法。