Передайте путь со скобками и пробелом в системном вызове внутри скрипта awk

Передайте путь со скобками и пробелом в системном вызове внутри скрипта 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/Other/new (Апплет) /home/software/Other/new (Апплет)

Это тест /home/software/Other/new (Апплет)

sh: -c: строка 0: синтаксическая ошибка около неожиданного токена (' sh: -c: line 0:ls /home/software/Other/new (Applet)'

Когда я изменил часть так, чтобы команда передавалась как строка

                               command= "ls new (Applet)"

                               system (command);

Я получаю похожие ошибки:

$ ./testhere.sh

/home/software/Другое/новый (Апплет)

/home/software/Другое/новый (Апплет)

Это тест /home/software/Other/new (Апплет)

sh: -c: строка 0: синтаксическая ошибка около неожиданного токена (' sh: -c: line 0:ls new (Applet)'

Как это обойти?

решение1

Необходимо заключить в кавычки (с помощью "" или '') слово, содержащее пробелы, для оболочки, реализующей system()вызов в awk, например:

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

или

system ("ls \"" Test "\"");

Связанный контент