gpt4 book ai didi

linux - 如何从 Bash 中的这个 "while read"循环中获取值?

转载 作者:太空宇宙 更新时间:2023-11-04 10:39:54 25 4
gpt4 key购买 nike

所以我有这个循环

    largest=0
find $path -type f | while read line; do
largest=$(stat -c '%s' $line)
done | sort -nr | head -1
echo $largest

但是由于 bash 子 shell 的原因,变量在循环后被重置。

是否有一个简单的修复方法可以用来取出这个变量?

最佳答案

问题中代码的问题是 while 循环结果在子 shell 中运行,因为它是管道命令的一部分。然后,当子 shell 退出时,largest 的值将丢失。

由于您使用的是 GNU/Linux(使用 GNU find),您可以使用它的 -printf 选项来大大简化您的命令并避免不必要的进程 fork (运行 stat) – 以及 while 循环的低效率。

find $path -type f -printf "%s\n"  | sort -nr | head -1

关于linux - 如何从 Bash 中的这个 "while read"循环中获取值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35597155/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com