Bash命令替换为参数

问题描述 投票:-1回答:1

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

此单引号,

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变量中运行。

linux bash command substitution
1个回答
1
投票

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

touch /tmp/helw && ...

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

pid='1024 --help ' piduser=$( touch /tmp/helw && ps -ouser -p$pid h )
© www.soinside.com 2019 - 2024. All rights reserved.