我有一个相当简单的脚本,类似于以下内容。
#!/bin/bash
VAR1="$1"
MOREF='sudo run command against $VAR1 | grep name | cut -c7-'
echo $MOREF
当我从命令行上运行这个脚本并把参数传给它时,我没有得到任何输出。 然而,当我运行包含在$MOREF
变量中的命令时,我能够得到输出。
怎样才能把需要在脚本中运行的命令的结果,保存在一个变量中,然后在屏幕上输出这个变量呢?
除了背号
外,你还可以使用command
$(command)
或"$(command)"
,我觉得这样更容易阅读,而且可以嵌套使用。
OUTPUT="$(ls -1)"
echo "${OUTPUT}"
MULTILINE=$(ls \
-1)
echo "${MULTILINE}"
引号("
)对保留多行值确实很重要。
正确的方法是
$(sudo run command)
如果你要使用撇号,你需要,而不是
。这个字符被称为"反标"(或"重音")。
像这样。
#!/bin/bash
VAR1="$1"
VAR2="$2"
MOREF=`sudo run command against "$VAR1" | grep name | cut -c7-`
echo "$MOREF"