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 "\"");
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?
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 "\"");
Tags awk linux bash-scripting