ksh no evaluar variable dentro de acentos abiertos
-
25-09-2019 - |
Pregunta
Éste me tiene confundido.
#!/bin/ksh
AWKSCRIPT='END { print "all done"; }'
OUTPUT=`echo hello world | awk '$AWKSCRIPT'`
RETVAL=$?
echo "running echo hello world | awk '$AWKSCRIPT'"
echo "Output = $OUTPUT"
echo "returned = $RETVAL"
La salida es
$ ./kshawk.ksh
Output = hello world
returned = 0
(que estaba esperando para ver "salida = todo hecho")
Parece que el intérprete no está sustituyendo la variable AWKSCRIPT la hora de evaluar la expresión (me da el mismo comportamiento si uso $ (...) en lugar de acentos abiertos).
Mientras que podía volcar AWKSCRIPT en un archivo temporal - esto tendría que ser demasiado hardcoded
Alguna idea de cómo interpolar una variable dentro de acentos abiertos?
Solución
Las comillas simples '$AWKSCRIPT'
prevenir la interpolación de la variable. Las comillas dobles sí permiten la interpolación:
$ OUTPUT=`echo hello world | awk "$AWKSCRIPT"`
$ echo $OUTPUT
all done
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow