Bash “我该怎么做?”;改为;while循环中的变量
如何在读取行时使用Bash “我该怎么做?”;改为;while循环中的变量,bash,variables,while-loop,Bash,Variables,While Loop,如何在读取行时使用读取变量 例如: the_list=$(..code..) while read line do echo $line done < $the_list 你可以用 your_code | while read line; do echo $line done 如果您不介意在子shell中执行while循环(在完成后,您修改的任何变量在父级中都不可见)。您可以编写: while IFS= read -r line do echo "$
读取变量
例如:
the_list=$(..code..)
while read line
do
echo $line
done < $the_list
你可以用
your_code | while read line;
do
echo $line
done
如果您不介意在子shell中执行while循环(在完成后,您修改的任何变量在父级中都不可见)。您可以编写:
while IFS= read -r line
do
echo "$line"
done <<< "$the_list"
当IFS=read-r行时
做
回音“$line”
完成如果不将变量用于其他任何事情,甚至可以不使用它:
while read line ; do
echo $line
done < <( ... code ... )
读行时;做
回音$线
完成<脚本文件应处于Linux模式。以前它是在dos模式下。我使用dos2unix文件名
更改了它
e、 g:
现在它对我有用了 IFS=
是否将IFS设置为空字符?在这种情况下为什么需要它?@doubleDown:IFS=
将$IFS
设置为空字符串(因此它根本不包含任何字符)。在这种情况下,由于只有一个字段,因此其唯一作用是防止从行的开头删除前导IFS字符。(要了解我的意思,请比较read foo,提问者接受了由提出的答案。这意味着问题与脚本的文件格式无关。
while read line ; do
echo $line
done < <( ... code ... )
dos2unix sshcopy.sh