我的一个
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.
我完全承认不是一个shell脚本向导,所以任何指针都会受到赞赏.