如何将变量设置为Bash中命令的输出?
我有一个非常简单的脚本,如下所示:
#!/bin/bash
VAR1="$1"
MOREF='sudo run command against $VAR1 | grep name | cut -c7-'
echo $MOREF
当我从命令行运行这个脚本并传递参数时,我没有得到任何输出。 但是,当我运行$MOREF
变量中包含的命令时,我能够获得输出。
我想知道如何将需要在脚本中运行的命令的结果保存到变量中,然后在屏幕上输出该变量?
除反引号之外,您可以使用$()
,我发现它更易于阅读,并允许嵌套。
OUTPUT="$(ls -1)"
echo "${OUTPUT}"
引用( "
)对于保留多行值很重要。
更新 (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),所以如果您的脚本必须在各种Unix上真正可移植系统,你应该更喜欢旧的反引号符号。
上一篇: How to set a variable to the output of a command in Bash?
下一篇: Get current directory name (without full path) in a Bash script