我有一个非常简单的脚本,如下所示:
#!/bin/bash
VAR1="$1"
MOREF='sudo run command against $VAR1 | grep name | cut -c7-'
echo $MOREF
当我从命令行运行此脚本并将参数传递给它时,我没有得到任何输出。但是,当我运行$MOREF
变量中包含的命令时,我能够获得输出。
我想知道如何获取需要在脚本中运行的命令的结果,将其保存到变量,然后在屏幕上输出该变量?
除了反引号( `command`
)之外,你可以使用$(command)
,我发现它更容易阅读,并允许嵌套。
OUTPUT="$(ls -1)"
echo "${OUTPUT}"
MULTILINE=$(ls \
-1)
echo "${MULTILINE}"
引用( "
)对保留多行值很重要。
更新 (2018 年):正确的方法是
$(sudo run command)
你使用的是错误的撇号。你需要`
,而不是'
。这个角色被称为 “反叛”(或 “重音”)。
像这样:
#!/bin/bash
VAR1="$1"
VAR2="$2"
MOREF=`sudo run command against "$VAR1" | grep name | cut -c7-`
echo "$MOREF"
正如他们已经向你指出的那样,你应该使用 '反引号'。
另外提出的$(command)
可以工作,并且它也更容易阅读,但请注意它只对 bash 或 korn shell(以及从这些 shell 派生的 shell)有效,所以如果你的脚本必须在各种 Unix 上真正可移植系统,你应该更喜欢旧的反引号表示法。