Re: Bash trivia question

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Thank you very much Michael, it worked.

Now I see I was overlooking this section in Bash Reference Manual (3.5.3
Shell Parameter Expansion) everytime I was going through it.  Stupid me :(

However I see that it works only if ! is the first character after ${
Thus,

#=========================
#!/bin/bash

STRING_1="Value of string one"
STRING_2="Value of string two"
STRING_3="Value of string three"
STRING_4="Value of string four"

for i in `seq 4`; do
        echo "Variable is :: STRING_${i}"
        # echo "Value is :: ${!STRING_${i}}"    # this won't work
        tval=STRING_${i}
        echo "Value is :: ${!tval}"        # Now this would work
done


#=========================

This makes sense to me though, else we would have a lot of ambigous
scenarios.

However, I couldn't figure out what could have been the problem in having it
this way ${STRING_${i}}, that is recursively handle ${${${...}}}

Regards,
irc


----- Original Message -----
From: "Michael Fratoni" <mfratoni@tuxfan.homeip.net>
To: <psyche-list@redhat.com>
Sent: Monday, 11 November, 2002 17:38
Subject: Re: Bash trivia question


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On Monday 11 November 2002 06:26 am, irc wrote:
> Hi all,
>
> Probably this isn't the right place to ask Bash questions.  But since
> this might be of some relevance to Redhat users I'm posting the
> question here.
>
> Consider the script below:
>
> #=========================================
> !/bin/bash
>
> STRING_1="Value of string one"
> STRING_2="Value of string two"
> STRING_3="Value of string three"
> STRING_4="Value of string four"
>
> for i in ${!STRING*}; do
>         echo "Variable is :: ${i}"        # output will be: Variable is
> :: STRING_1, STRING_2 ... ... etc.
>         echo "Value is :: <???>"        # output will be: Value is ::
> Value of string one, Value of string two, ... ... etc.
> done
> #=========================================
>
> My question is what should I write in the place of <???> ?

This should work.

#!/bin/bash

STRING_1="Value of string one"
STRING_2="Value of string two"
STRING_3="Value of string three"
STRING_4="Value of string four"

for i in ${!STRING*}; do
        echo "Variable is :: ${i}"
        echo "Value is :: ${!i}"
done

- --
- -Michael

pgp key:  http://www.tuxfan.homeip.net:8080/gpgkey.txt
Red Hat Linux 7.{2,3}|8.0 in 8M of RAM: http://www.rule-project.org/
- --
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.7 (GNU/Linux)

iD8DBQE9z53Ln/07WoAb/SsRAkLMAJ4wf3mhyXM1FVUJSGGJbBmuvIIs1gCgkFVi
J9wBJ2B+aQZZbu6YmskC0yU=
=19O8
-----END PGP SIGNATURE-----



--
Psyche-list mailing list
Psyche-list@redhat.com
https://listman.redhat.com/mailman/listinfo/psyche-list




-- 
Psyche-list mailing list
Psyche-list@redhat.com
https://listman.redhat.com/mailman/listinfo/psyche-list

[Index of Archives]     [Fedora General Discussion]     [Red Hat General Discussion]     [Centos]     [Kernel]     [Red Hat Install]     [Red Hat Watch]     [Red Hat Development]     [Red Hat 9]     [Gimp]     [Yosemite News]

  Powered by Linux