
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/Outro/novo (Miniaplicativo) /home/software/Outro/novo (Miniaplicativo)
Este é um teste /home/software/Other/new (Miniaplicativo)
sh: -c: linha 0: erro de sintaxe próximo ao token inesperado (' sh: -c: line 0:
ls /home/software/Other/new (Applet)'
Quando modifiquei a parte para que o comando seja passado como string
command= "ls new (Applet)"
system (command);
Estou recebendo erros semelhantes:
$ ./testhere.sh
/home/software/Outro/novo (miniaplicativo)
/home/software/Outro/novo (miniaplicativo)
Este é um teste /home/software/Other/new (Miniaplicativo)
sh: -c: linha 0: erro de sintaxe próximo ao token inesperado (' sh: -c: line 0:
ls novo (miniaplicativo)'
Como faço para contornar isso?
Responder1
Você deve citar (com "" ou '') a palavra que possui espaços para o shell que está implementando a system()
chamada no awk: ex:
system ("ls '" Test "'");
ou
system ("ls \"" Test "\"");