例如这个有效:
echo 1 // output: 1
这不起作用:
'echo 1' | "/bin/sh" // output: echo 1: command not found
为什么是字符串,因为我有 awk 的输出,并且我需要传递字符串来执行这样的命令:
awk '{ print 'chmod 755 "$0"' | "/bin/sh"}' file.txt
我需要使用这样的字符串,因为我猜它让我将参数放在命令中我想要的位置。
因此,在将它放入 awk 打印命令之前,我首先想尝试从 bash 手动执行它,看看它是否有效。
答案1
你是将字符串传递给 shell - 但是你传递的字符串是1
要通过echo 1
你需要类似
echo 'echo 1' | /bin/sh
或者
printf '%s' 'echo 1' | /bin/sh
( 之外awk
,无需引用/bin/sh
)。