如何将字符串命令传递给 shell 管道来执行它(awk 的输出)

如何将字符串命令传递给 shell 管道来执行它(awk 的输出)

例如这个有效:

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)。

相关内容