在 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);    }'

问题在于()的错误

$./testthere.sh

/home/软件/其他/新 (小程序) /home/软件/其他/新 (小程序)

这是一个测试 /home/software/Other/new (Applet)

sh:-c:第 0 行:意外标记(' sh: -c: line 0:ls /home/software/Other/new (Applet)附近出现语法错误

当我修改该部分以便命令作为字符串传递时

                               command= "ls new (Applet)"

                               system (command);

我遇到了类似的错误:

$./testhere.sh

/home/software/Other/new (小程序)

/home/software/Other/new (小程序)

这是一个测试 /home/software/Other/new (Applet)

sh: -c: 第 0 行:意外标记(' sh: -c: line 0:ls new (Applet) 附近有语法错误'

我该如何解决这个问题?

答案1

您必须用引号("" 或 '')包含空格的单词,用于system()在 awk 中实现调用的 shell:例如:

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

或者

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

相关内容