Ubuntu Suomen keskustelualueet

Ubuntun käyttö => Ohjelmointi, palvelimet ja muu edistyneempi käyttö => Aiheen aloitti: AimoE - 22.06.21 - klo:15.06

Otsikko: kun muuttujan nimi on muuttuja (dash/bash) [Ratkaistu]
Kirjoitti: AimoE - 22.06.21 - klo:15.06
Yritän käyttää scrptin mukaan nimettyä muuttujaa, jonka arvoa en halua välittää komentorivillä:

Koodia: [Valitse]
#!/bin/dash
ev=$(basename $0  | tr '[a-z]-' '[A-Z]_')_NOISY
eval "noisy=\$$ev"
jobs="$@"
# jatkuu...

Mutta vaikka mitä yritän, eval ei anna arvoa muuttujalle noisy. Olen kokeilut vaikka mitä esimerkkejä joita netistä löydän, mutta en vaan onnistu edes bashissä. Mikä on vikana?
Otsikko: Vs: kun muuttujan nimi on muuttuja (dash/bash)
Kirjoitti: SuperOscar - 22.06.21 - klo:15.59
Liikaa lainauksia, pitäisi olla:

Koodia: [Valitse]
eval "noisy=\$ev"
Otsikko: Vs: kun muuttujan nimi on muuttuja (dash/bash)
Kirjoitti: AimoE - 22.06.21 - klo:16.26
Näinpä. Sitä se helle teettää.
Otsikko: Vs: kun muuttujan nimi on muuttuja (dash/bash) [Ratkaistu]
Kirjoitti: AimoE - 23.06.21 - klo:12.42
Hyväksyinkin väärän vastauksen. Testaan asetetusta muuttujasta vain se, onko se asetettu eli [ -n "$noisy" ], joten en huomannut että arvo asettui väärin.

Vika likin siinä että olin asettanut muuttujan ilman export-komentoa. Nyt kun asetan muuttujan exportilla, niin ensimmäinen muoto onkin oikein.

Koodia: [Valitse]
#!/bin/dash
ev=$(basename $0  | tr '[a-z]-' '[A-Z]_')_NOISY
eval "noisy=\$$ev"
jobs="$@"
# jatkuu...

Scriptissäni on nyt

Koodia: [Valitse]
ev () {
    ev=$(basename $0)_$1
    eval $1=\$$(printf $ev | tr '[a-z]-' '[A-Z]_')
}