如何从变量中读取while read line
?
例如:
the_list=$(..code..)
while read line
do
echo $line
done < $the_list
使用上面的代码给我错误:
./copy.sh: line 25: $the_list: ambiguous redirect
如何从变量中读取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 参考手册中的第 3.6.7 节“此处的字符串”。
(我还冒昧地添加了一些双引号,并添加了-r
and IFS=
to read
,以避免过多地混淆变量的内容。)
如果您不将变量用于其他任何事情,您甚至可以不使用它:
while read line ; do
echo $line
done < <( ... code ... )
你可以使用
your_code | while read line;
do
echo $line
done
如果您不介意在子 shell 中执行的 while 循环(您修改的任何变量在 之后的父项中都不可见done
)。
脚本文件应为 Linux 模式。以前它处于dos模式。我使用 dos2unix filename
.
例如:
dos2unix sshcopy.sh
现在它对我有用。