Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash “我该怎么做?”;改为;while循环中的变量_Bash_Variables_While Loop - Fatal编程技术网

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