如何从Bash中的“while read”循环中获取值?

时间:2016-02-24 08:41:05

标签: linux bash

所以我有这个循环

<pre></pre>

但由于bash subshel​​l事件,变量在循环后被重置。

我可以使用一个简单的解决方法来获取此变量吗?

2 个答案:

答案 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