我的一个shell脚本有问题。问了几个同事,但他们都只是摇了摇头(经过一番抓挠),所以我来这里就是一个答案。
根据我的理解,以下shell脚本应在最后一行打印“ Count is 5”。除非不是。打印“ Count is 0”。如果将“ while读取”替换为任何其他类型的循环,则可以正常工作。这是脚本:
回声“ 1”> input.data 回声“ 2” >> input.data 回声“ 3” >> input.data 回声“ 4” >> input.data 回声“ 5” >> input.data 碳纳米管= 0 cat input.data | 阅读时; 做 让CNT ++; 回声“计数到$ CNT” 完成 回声“计数是$ CNT”
为什么会发生这种情况,如何预防呢?我已经在Debian Lenny和Squeeze中尝试过,结果相同(即bash 3.2.39和bash 4.1.5。我完全承认自己不是shell脚本向导,因此希望使用任何指针。