所以我有这个循环
<pre></pre>
但由于bash subshell事件,变量在循环后被重置。
我可以使用一个简单的解决方法来获取此变量吗?
答案 0 :(得分:1)
问题中的代码问题是while
循环结果由于它是管道命令的一部分而在子shell中运行。然后,当子shell退出时,largest
的值将丢失。
由于您正在使用GNU / Linux(使用GNU find
),您可以使用其-printf
选项来大大简化命令并避免不必要的进程分支(运行stat
) - 和while循环的低效率。
find $path -type f -printf "%s\n" | sort -nr | head -1
答案 1 :(得分:0)
largest=`find $path -type f | while read line; do
stat -c '%s' $line
done | sort -nr | head -1`
echo $largest