Bash bug?

From: Zoltan Boszormenyi (zboszor_at_freemail.hu)
Date: 09/26/05

  • Next message: Kanwar Ranbir Sandhu: "Re: /etc/sysconfig/harddisks isn't read"
    Date: Mon, 26 Sep 2005 07:12:42 +0200
    To: Fedora Core users <fedora-list@redhat.com>
    
    

    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"
    --------------------------------

    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
    --------------------------------

    It seems to be a bug to me, the envvars lose their values
    they gained in the loop. It's an ancient bug I must add,
    I just rechecked it and bash in RedHat 7.1 behaves the same.
    How can I preserve the variables' values? Putting "export"
    in front of every assignments doesn't help.

    Best regards,
    Zoltán Böszörményi

    -- 
    fedora-list mailing list
    fedora-list@redhat.com
    To unsubscribe: https://www.redhat.com/mailman/listinfo/fedora-list
    

  • Next message: Kanwar Ranbir Sandhu: "Re: /etc/sysconfig/harddisks isn't read"

    Relevant Pages

    • Re: Bash bug?
      ... > a directory in a line, depending on the tokens, ... > the configuration file whether all the required/optional ... The first exists outside the while loop, ... Even if they were environment variables and had a permanent life outside ...
      (Fedora)
    • Re: Bash bug?
      ... > a directory in a line, depending on the tokens, ... > the configuration file whether all the required/optional ... It's an ancient bug I must add, ... sub-shell is opened for this loop. ...
      (Fedora)
    • Re: Bash bug?
      ... =>a directory in a line, depending on the tokens, ... =>the configuration file whether all the required/optional ... Time flies like the wind. ... Stranger things have .0. ...
      (Fedora)
    • Re: create/access dynamic growth list
      ... >>Currently I the following method can only read and store data that ... >>Since there are unknown number of lines in a configuration file, ... Since each line of the configuration file need to be parsed into "key" ... Can I use the following operation to store these pair of tokens? ...
      (comp.lang.python)