
Dentro de mi simple script awk, llamo al comando del sistema
#!/bin/bash
Test='/home/software/Other/new (Applet)'
ls "${Test}"
var=$(ls "${Test}")
echo $var
awk -vTest="$var" 'BEGIN {
#some code that works
print "This is a test", Test
#command= "ls new (Applet)"
system ("ls " Test); }'
El problema es el error con los ()
$./testhere.sh
/home/software/Otro/nuevo (Applet) /home/software/Otro/nuevo (Applet)
Esta es una prueba /home/software/Otro/nuevo (Applet)
sh: -c: línea 0: error de sintaxis cerca del token inesperado (' sh: -c: line 0:
ls /home/software/Other/new (Applet)'
Cuando modifiqué la parte para que el comando se pase como una cadena
command= "ls new (Applet)"
system (command);
Recibo errores similares:
$ ./testhere.sh
/home/software/Otro/nuevo (Applet)
/home/software/Otro/nuevo (Applet)
Esta es una prueba /home/software/Otro/nuevo (Applet)
sh: -c: línea 0: error de sintaxis cerca del token inesperado (' sh: -c: line 0:
ls nuevo (Applet)'
¿Cómo soluciono esto?
Respuesta1
Debes citar (con "" o '') la palabra que tiene espacios para el shell que está implementando la system()
llamada en awk: por ejemplo:
system ("ls '" Test "'");
o
system ("ls \"" Test "\"");