如何使用while read line
?
例如:
the_list=$(..code..)
while read line
do
echo $line
done < $the_list
使用上面的代码给我错误:
./copy.sh: line 25: $the_list: ambiguous redirect
您可以写:
while IFS= read -r line
do
echo "$line"
done <<< "$the_list"
请参阅 bash参考手册中的"此处的字符串"。。
(我也占据了添加一些双重引用的自由,并将-r
和IFS=
添加到read
,以避免使用变量的内容过多。)
如果您不将变量用于其他任何东西,甚至可以没有它:
while read line ; do
echo $line
done < <( ... code ... )
您只能使用
your_code | while read line;
do
echo $line
done
如果您不介意在子壳中执行时循环(您修改的任何变量在 done
之后都在父级中可见)。
脚本文件应处于Linux模式。以前是DOS模式。我使用dos2unix filename
更改了它。
例如:
dos2unix sshcopy.sh
现在它对我有用。