Bash bug?
Steven W. Orr
steveo at syslang.net
Fri Sep 30 14:56:23 UTC 2005
On Monday, Sep 26th 2005 at 07:12 +0200, quoth Zoltan Boszormenyi:
=>Hi,
=>
=>I am trying something like the following,
=>with a configuration file containing a token and
=>a directory in a line, depending on the tokens,
=>certain actions should be taken later. Validating
=>the configuration file whether all the required/optional
=>tokens are in the file should go like this:
=>
=>-----a.txt----------------------
=>A directory1
=>B directory2
=>C directory3
=>--------------------------------
=>
=>-----a.sh-----------------------
=>#!/bin/bash
=>
=>HAS_A=0
=>HAS_B=0
=>HAS_C=0
=>cat a.txt | while read i ; do
=> if [ "`echo $i | awk '{ print $1 }'`" = "A" ]; then
=> HAS_A=1
=> fi
=> if [ "`echo $i | awk '{ print $1 }'`" = "B" ]; then
=> HAS_B=1
=> fi
=> if [ "`echo $i | awk '{ print $1 }'`" = "C" ]; then
=> HAS_C=1
=> fi
=> echo "A: $HAS_A B: $HAS_B C: $HAS_C"
=>done
=>echo "Final A: $HAS_A B: $HAS_B C: $HAS_C"
=>--------------------------------
#!/bin/bash
HAS_A=0
HAS_B=0
HAS_C=0
while read lbl dir
do
[[ $lbl = A ]] && HAS_A=1
[[ $lbl = B ]] && HAS_B=1
[[ $lbl = C ]] && HAS_C=1
echo "A: $HAS_A B: $HAS_B C: $HAS_C"
done < a.txt
echo "Final A: $HAS_A B: $HAS_B C: $HAS_C"
cat | while causes the while to be in a subshell.
=>Result is:
=>
=>--------------------------------
=>$ ./a.sh
=>A: 1 B: 0 C: 0
=>A: 1 B: 1 C: 0
=>A: 1 B: 1 C: 1
=>Final A: 0 B: 0 C: 0
=>--------------------------------
--
Time flies like the wind. Fruit flies like a banana. Stranger things have .0.
happened but none stranger than this. Does your driver's license say Organ ..0
Donor?Black holes are where God divided by zero. Listen to me! We are all- 000
individuals! What if this weren't a hypothetical question?
steveo at syslang.net
More information about the fedora-list
mailing list