在我的简单 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 "\"");