Передайте путь с круглыми скобками и пробелом в системном вызове внутри скрипта awk
Внутри моего простого скрипта на awk я вызываю системную команду
#!/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); }'
Проблема в ошибке с ()
$./ Testhere.sh
/ home / software / другое / new (апплет) / home / software / другое / new (апплет)
Это тест / домашний / софт / другое / новый (апплет)
sh: -c: строка 0: синтаксическая ошибка рядом с неожиданным токеном ('
sh: -c: line 0:
ls /home/software/Other/new (Applet)'
Когда я изменил деталь так, что команда передается в виде строки
command= "ls new (Applet)"
system (command);
Я получаю похожие ошибки:
$./testhere.sh
/ home / software / другое / new (апплет)
/ home / software / другое / new (апплет)
Это тест / домашний / софт / другое / новый (апплет)
sh: -c: строка 0: синтаксическая ошибка рядом с неожиданным токеном ('
sh: -c: line 0:
ls new (Апплет) '
Как мне обойти это?
1 ответ
Вы должны заключить в кавычки ("или") слово, в котором есть пробелы для оболочки, реализующей system()
позвоните в awk: например:
system ("ls '" Test "'");
или же
system ("ls \"" Test "\"");