BASH-类似字符串的命令

BASH-类似字符串的命令,bash,command,pwd,Bash,Command,Pwd,我想知道在BASH中是否可以这样使用命令: 让我们执行命令pwd 假设我想要一个变量comm=“pwd”,然后在程序中的某个地方使用它,但是当我使用它时,我得到了真正的pwd命令输出。这可能吗 是的,只需将sub命令用反勾号(字符)括起来即可: 尝试这样做: var=$(pwd) 反引号(`)用于旧式命令替换,例如 foo=`command` 建议改为使用语法。$()内部的反斜杠处理不那么令人惊讶,而且$()更容易嵌套。请参见这很简单,您只需执行以下操作: comm='pwd' # ju

我想知道在BASH中是否可以这样使用命令:

让我们执行命令
pwd


假设我想要一个变量
comm=“pwd”
,然后在程序中的某个地方使用它,但是当我使用它时,我得到了真正的pwd命令输出。这可能吗

是的,只需将sub命令用反勾号(字符)括起来即可:

尝试这样做:

var=$(pwd)

反引号(`)用于旧式命令替换,例如

foo=`command`


建议改为使用语法。
$()
内部的反斜杠处理不那么令人惊讶,而且
$()
更容易嵌套。请参见

这很简单,您只需执行以下操作:

comm='pwd'
# just execute
$comm
# fetch output into variable
output=$($comm)

-1用于旧式/不适合嵌套。感谢为新来者提供最佳实践。感谢@sputnick,
$()
看起来是一个更好的解决方案-1:这没有任何作用:
comm='pwd'
但是将字符串'pwd'馈送给comm变量您在哪里测试过它?我使用的是bash4.2。25@sputnick你怎么能这么说?!确实有效!你确定你理解了这个问题吗?但是这个:var=“$(ps-e-o”pid comm%mem user%cpu”-sort-%cpu | head-n 11)”没有给出与此相同的输出:ps-e-o“pid comm%mem user%cpu”-sort-%cpu | head-n 11你需要在变量上加引号,比如
echo“$var”
“使用更多引号!”和每次展开时加上“双引号”,以及可能包含特殊字符的任何内容,例如“$var”、“$@”、“${array[@]}”、“$(command)”。Bash将“单引号”中的所有内容都视为文字。了解“and”和“and”之间的区别。看,你读过这个问题了吗?
假设我想要一个变量comm=“pwd然后在程序的某个地方使用它。。意思是不
在程序的某个地方使用它的输出
@hek2mgl:在再次阅读OP问题后,不清楚这里真正的问题是什么是的,你可以这样做-参见by。在这个简单的例子中,有一个命令,没有参数,这是直截了当的。使用简单的无空间参数的命令也可以。如果命令需要在参数中保留空格,那么它绝不是直截了当的,可能有更好的方法。
foo=$(command)
comm='pwd'
# just execute
$comm
# fetch output into variable
output=$($comm)