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 )
在我和朋友们一起解决了一个具有挑战性的问题之后,我有了一个想法来做一个盲目命令替换。
这个用单引号,
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 )