gpt4 book ai didi

Bash 的 cat、while、let 和 pipe 导致奇怪的作用域行为

转载 作者:行者123 更新时间:2023-11-29 09:22:26 25 4
gpt4 key购买 nike

这是我的脚本:

count=0
cat myfile | while read line
do
#some stuff...
let count++
echo $count
done
echo $count

最后一个 echo 语句输出 0 而不是文件中的行数,尽管 while 循环中的 echo 语句打印递增的值。

问题出在管道上,因为通过一个简单的 while 循环,最后的 echo 语句打印出正确的值。我怎样才能让它发挥作用?

最佳答案

在 Bash 中,您可以使用进程替换并避免临时文件,while 循环中的变量将被保留。

count=0
while read -r line # you should almost always use -r
do
#some stuff...
(( count++ )) # alternative form
echo $count
done < <(tac myfile)
echo $count

关于Bash 的 cat、while、let 和 pipe 导致奇怪的作用域行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4237048/

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