bash:变量在读取循环结束时丢失值
发布时间:2020-12-15 18:43:11 所属栏目:安全 来源:网络整理
导读:我的一个 shell脚本有问题.问了几个同事,但他们都只是摇头(经过一些刮伤),所以我来这里寻求答案. 根据我的理解,下面的shell脚本应该打
我的一个
shell脚本有问题.问了几个同事,但他们都只是摇头(经过一些刮伤),所以我来这里寻求答案.
根据我的理解,下面的shell脚本应该打印“Count is 5”作为最后一行.除了它没有.它打印“Count is 0”.如果“while read”被任何其他类型的循环替换,它就可以正常工作.这是脚本: echo "1">input.data echo "2">>input.data echo "3">>input.data echo "4">>input.data echo "5">>input.data CNT=0 cat input.data | while read ; do let CNT++; echo "Counting to $CNT" done echo "Count is $CNT" 为什么会发生这种情况,我该如何预防呢?我在Debian Lenny和Squeeze中尝试了这个,结果相同(即bash 3.2.39和bash 4.1.5.
参见@
Bash FAQ entry #24: “I set variables in a loop. Why do they suddenly disappear after the loop terminates? Or,why can’t I pipe data to read?”参数(最近归档的
here).
摘要:仅从bash 4.2及更高版本支持此功能.如果使用bash,则需要使用命令替换等不同方式而不是管道. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |