Passa um caminho com parêntese e espaço na chamada do sistema dentro do script awk

0

Dentro do meu script awk simples, eu chamo o comando do 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);    }'

O problema é o erro com o () 's

$. / testhere.sh

/ home / software / Outros / novo (Applet) / home / software / Outros / novo (Applet)

Este é um teste / home / software / Other / new (Applet)

sh: -c: linha 0: erro de sintaxe próximo do token inesperado (' sh: -c: line 0: ls / home / software / Outro / novo (Applet) '

Quando modifiquei a parte para que o comando seja passado como uma string

                               command= "ls new (Applet)"

                               system (command);

Estou recebendo erros semelhantes:

$ ./testhere.sh

/ home / software / Outros / novo (Applet)

/ home / software / Outros / novo (Applet)

Este é um teste / home / software / Other / new (Applet)

sh: -c: linha 0: erro de sintaxe próximo do token inesperado (' sh: -c: line 0: ls novo (Applet) '

Como faço para contornar isso?

    
por newbie 21.07.2015 / 15:48

1 resposta

2

Você deve citar (com "" ou "") a palavra que tem espaços para o shell que está implementando a chamada system() no awk: por exemplo:

system ("ls '" Test "'"); 

ou

system ("ls \"" Test "\"");
    
por 21.07.2015 / 16:26