Ubuntu Suomen keskustelualueet
Ubuntun käyttö => Ohjelmointi, palvelimet ja muu edistyneempi käyttö => Aiheen aloitti: AimoE - 22.06.21 - klo:15.06
-
Yritän käyttää scrptin mukaan nimettyä muuttujaa, jonka arvoa en halua välittää komentorivillä:
#!/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?
-
Liikaa lainauksia, pitäisi olla:
eval "noisy=\$ev"
-
Näinpä. Sitä se helle teettää.
-
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.
#!/bin/dash
ev=$(basename $0 | tr '[a-z]-' '[A-Z]_')_NOISY
eval "noisy=\$$ev"
jobs="$@"
# jatkuu...
Scriptissäni on nyt
ev () {
ev=$(basename $0)_$1
eval $1=\$$(printf $ev | tr '[a-z]-' '[A-Z]_')
}