跑步跟踪或者设置-x使用 Bash 将打印扩展命令:
$ bash -xc 'touch "alfa bravo"'
+ touch 'alfa bravo'
然而,Dash 不会打印实际运行的命令:
$ dash -xc 'touch "alfa bravo"'
+ touch alfa bravo
打印的命令看起来创建了 2 个文件,而该命令实际上创建了 1 个文件。 Dash 可以打印实际运行的命令吗?
答案1
这是一个非常糟糕的解决方法,但似乎可以解决问题:
BEGIN {
w = "\47"
while (++i < ARGC) {
x = split(ARGV[i], y, w)
for (each in y) {
if (y[each] ~ /[^[:alnum:]%+,./:=@_-]/)
printf w y[each] w
else
printf y[each]
if (each < x)
printf "\\" w
}
if (i == ARGC - 1)
printf RS
else
printf FS
}
}
结果:
$ awk -f charlie.awk touch "alfa bravo"
touch 'alfa bravo'
$ awk -f charlie.awk touch 'alfa"bravo'
touch 'alfa"bravo'
$ awk -f charlie.awk touch "alfa'bravo"
touch alfa\'bravo