如何在 while 循环中"read"变量



如何使用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参考手册中的"此处的字符串"。

(我也占据了添加一些双重引用的自由,并将-rIFS=添加到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

现在它对我有用。

相关内容

  • 没有找到相关文章

最新更新