Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.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 这里是嵌套循环中的字符串_Bash_While Loop - Fatal编程技术网

Bash 这里是嵌套循环中的字符串

Bash 这里是嵌套循环中的字符串,bash,while-loop,Bash,While Loop,我得到了这样一段bash代码: var="empty" find $path1 -maxdepth 3 | while read line; do find $path2 -maxdepth 1 | while read line2; do if [[ $line2 != $var ]]; then echo "new value" fi var=$line2 done <<< "$line2" done var=“

我得到了这样一段bash代码:

var="empty"

find $path1 -maxdepth 3  | while read line; do
find $path2 -maxdepth 1  | while read line2; do        
    if [[ $line2 != $var ]]; then
      echo "new value"
    fi
    var=$line2
 done <<< "$line2"
done
var=“空”
读取行时查找$path1-maxdepth 3 |;做
在读取第2行时查找$path2-maxdepth 1;做
如果[[$line2!=$var]];然后
回应“新价值”
fi
var=$line2

done您正在使用read from stdin将值读取到第2行,并使用stdin上的here字符串将第2行的值输入到
done
处的循环中。bash给出了here字符串的优先级,因此line2仅从line2赋值,这意味着它从未设置过

echo -e "one\nthree\nfive" | while read num
do echo $num
done <<< "two"  

这个很好用

我也很难理解这个问题和他的意图,但是这绝对应该是一个评论而不是一个答案。我读错了吗,或者你是在用stdin的read将值读入第2行,然后用stdin上的here字符串将第2行的值输入循环?我知道有一个find管道,但是我的bash给出了here字符串的优先级<代码>echo-e“一个\n树\n五个”|同时读取num;执行echo$num;我知道这是错的。我只是想知道如何使var在循环中更改时保持不变。我做这个主题是因为类似的人在这里签名为复制字符串。
find ~ | while read f; do var=$f; echo $f; done