Bash 命令替换为参数

Bash Command Substitution as Parameter

在我和朋友们一起解决了一个具有挑战性的问题之后,我有了一个想法来做一个盲目命令替换。

这个用单引号,

pid='1024 --help `touch /tmp/helw`' piduser=$(ps -ouser -p$pid h)

不创建文件 /tmp/helw

但是这个带双引号的,

pid="1024 --help `touch /tmp/helw`" piduser=$(ps -ouser -p$pid h)

创建文件。

我的问题是,如何在 pid 变量中而不是 piduser 变量中进行命令替换而不让它 运行。

首先,不要。单独的操作可以而且应该是单独的操作。

touch /tmp/helw && ...

...但是如果出于某种奇怪的原因这实际上是必要的(我无法想象为什么),在 $(...) 中所做的任何事情都是一个子 shell,并且可以是多个命令。

pid='1024 --help ' piduser=$( touch /tmp/helw && ps -ouser -p$pid h )