GNU/Linux >> Linux Esercitazione >  >> Linux

Come differire l'espansione variabile?

Volevo inizializzare alcune stringhe nella parte superiore del mio script con variabili che non sono state ancora impostate, come ad esempio:

str1='I went to ${PLACE} and saw ${EVENT}'
str2='If you do ${ACTION} you will ${RESULT}'

e poi su PLACE , EVENT , ACTION e RESULT sarà impostato. Voglio quindi essere in grado di stampare le mie stringhe con le variabili espanse. La mia unica opzione è eval ? Questo sembra funzionare:

eval "echo ${str1}"

è questo standard? c'è un modo migliore per farlo? Sarebbe bello non eseguire eval considerando le variabili potrebbe essere qualsiasi cosa.

Risposta accettata:

Con il tipo di input che mostri, l'unico modo per sfruttare l'espansione della shell per sostituire i valori in una stringa è usare eval in qualche forma. Questo è sicuro finché controlli il valore di str1 e può garantire che faccia riferimento solo a variabili note come sicure (che non contengono dati riservati) e non contenga nessun altro carattere speciale della shell senza virgolette. Dovresti espandere la stringa tra virgolette doppie o in un documento here, in questo modo solo "$` sono speciali (devono essere preceduti da un in str1 ).

eval "substituted="$str1""

Sarebbe molto più robusto definire una funzione invece di una stringa.

fill_template () {
  sentence1="I went to ${PLACE} and saw ${EVENT}"
  sentence2="If you do ${ACTION} you will ${RESULT}"
}

Imposta le variabili, quindi chiama la funzione fill_template per impostare le variabili di output.

PLACE=Sydney; EVENT=fireworks
ACTION='not learn from history'; RESULT='have to relive history'
fill_template
echo "During my holidays, $sentence1."
echo "Cicero said: "$sentence2"."

Linux
  1. Come assegnare l'output di un comando Linux a una variabile

  2. Come ottenere un tipo di dati di variabili in Zsh?

  3. Esempi di comandi di esportazione Linux (come impostare le variabili di ambiente)

  4. Come memorizzare un comando in una variabile in uno script di shell?

  5. Come reperire una variabile specifica

Come impostare le variabili d'ambiente in MacOS

Come utilizzare le variabili in Ansible Playbook

Come utilizzare le variabili negli script della shell

Come installare Maven su Windows

Come impostare/disimpostare le variabili d'ambiente in Linux

Come impostare la variabile d'ambiente in Bash