Sto cercando di creare una variabile dinamica e assegnare ad esso 100
Come creare una variabile dinamica e assegnare un valore ad essa?
#!/bin/bash
.
.
active_id=$p_val
flag_$active_id=100
Ma sto errore in tal modo, qualsiasi aiuto?
Sto cercando di creare una variabile dinamica e assegnare ad esso 100
Come creare una variabile dinamica e assegnare un valore ad essa?
#!/bin/bash
.
.
active_id=$p_val
flag_$active_id=100
Ma sto errore in tal modo, qualsiasi aiuto?
È possibile utilizzare bash dichiarano direttiva e indirezione caratteristica come questo:
p_val="foo"
active_id=$p_val
declare "flag_$active_id"="100"
TEST:
> set | grep flag
flag_foo=100
UPDATE:
p_val="foo"
active_id="$p_val"
v="flag_$active_id"
declare "$v"="100"
> echo "$v"
flag_foo
> echo "${!v}"
100
Utilizzo in if condition
:
if [ "${!v}" -ne 100 ]; then
echo "yes"
else
echo "no"
fi
# prints no
grazie anubhava, ma sto ricevendo errore in questo codice: se [flag_ $ active_id -ne 100] then ... else ... –
@ShivamAgrawal: Controlla la mia sezione ** Update **, ho fornito un esempio del suo uso in 'if then ... else ... fi' block. – anubhava
qual è il significato del punto e virgola qui "se [" $ {! V} "-ne 100];" –
Non so a cosa serva, ma è possibile ottenere cose del genere con la dichiarazione eval
di bash.
Il seguente codice lo illustra.
#!/bin/bash
p_val="TEST"
active_id=$p_val
eval "flag_$active_id=100"
echo $flag_TEST
eval "echo \$flag_$active_id"
La terminazione echo
's mette
100
100
sul stdout
.
Solo una parola amichevole attenzione, mentre questo funzionerà, eval è un super pericoloso, specialmente sul guscio. quindi non usare mai nulla che provenga dall'input dell'utente. mai. –
possibile duplicato del [Bash dinamica nomi delle variabili] (http://stackoverflow.com/questions/16553089/bash-dynamic-variable-names) – rkhayrov