I have a problem in one of my shell scripts. Asked a few colleagues, but they all just shake their heads (after some scratching), so I’ve come here for an answer.
According to my understanding the following shell script should print “Count is 5″ as the last line. Except it doesn’t. It prints “Count is 0″. If the “while read” is replaced with any other kind of loop, it works just fine. Here’s the script:
echo "1">input.data echo "2">>input.data echo "3">>input.data echo "4">>input.data echo "5">>input.dataCNT=0 cat input.data | while read ; do let CNT++; echo "Counting to $CNT" done echo "Count is $CNT"
Why does this happen and how can I prevent it? I’ve tried this in Debian Lenny and Squeeze, same result (i.e. bash 3.2.39 and bash 4.1.5.
I fully admit to not being a shell script wizard, so any pointers would be appreciated.
Leave a comment
- Windows File Permissions and Attributes
- What is the easiest way to upgrade my existing Perl 5.14 to Perl 5.16 on FreeBSD 9 using the ports system?
- Know if mysql has done its job
- Redirect https .com to https .co.uk without a valid SSL cert on .com without DNS change
- Why is it a bad idea to use customer email as from address