为什么 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
为您拆分字段通常是最佳做法。
我正在使用 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
为您拆分字段通常是最佳做法。