GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo aplazar la expansión variable?

Quería inicializar algunas cadenas en la parte superior de mi secuencia de comandos con variables que aún no se han configurado, como:

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

y luego en PLACE , EVENT , ACTION y RESULT se establecerá. Quiero poder imprimir mis cadenas con las variables expandidas. Es mi única opción eval ? Esto parece funcionar:

eval "echo ${str1}"

¿Esto es estándar? ¿Hay una mejor manera de hacer esto? Sería bueno no ejecutar eval teniendo en cuenta las variables podría ser cualquier cosa.

Respuesta aceptada:

Con el tipo de entrada que muestra, la única forma de aprovechar la expansión de Shell para sustituir valores en una cadena es usar eval de alguna forma. Esto es seguro siempre que controle el valor de str1 y puede asegurarse de que solo hace referencia a variables que se conocen como seguras (que no contienen datos confidenciales) y no contiene ningún otro carácter especial de shell sin comillas. Debe expandir la cadena dentro de comillas dobles o en un documento aquí, de esa manera solo "$` son especiales (deben ir precedidos de un en str1 ).

eval "substituted="$str1""

Sería mucho más robusto definir una función en lugar de una cadena.

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

Establezca las variables y luego llame a la función fill_template para configurar las variables de salida.

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. Cómo asignar la salida de un comando de Linux a una variable

  2. ¿Cómo hacer una evaluación de variables indirectas?

  3. Ejemplos de comandos de exportación de Linux (cómo establecer variables de entorno)

  4. ¿Cómo almacenar un comando en una variable en un script de shell?

  5. ¿Cómo usar variables atómicas en C?

Cómo establecer variables de entorno en MacOS

Cómo usar variables en Ansible Playbook

Cómo usar variables en secuencias de comandos de Shell

Cómo instalar Maven en Windows

Cómo configurar/desconfigurar variables de entorno en Linux

Cómo establecer la variable de entorno en Bash