Pase una ruta con paréntesis y espacio en la llamada al sistema dentro del script awk

Pase una ruta con paréntesis y espacio en la llamada al sistema dentro del script awk

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 "\"");

información relacionada