如何将变量设置为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