我有一个非常简单的脚本,类似于以下内容:
#!/bin/bash VAR1="$1" MOREF='sudo run command against $VAR1 | grep name | cut -c7-' echo $MOREF
当我从命令行运行这个脚本并将参数传递给它时,我没有得到任何输出。但是,当我运行$MOREF变量中包含的命令时,我可以获得输出。
$MOREF
如何获取需要在脚本中运行的命令的结果,将其保存到变量中,然后将该变量输出到屏幕上?
除了反引号之外command,还可以使用or来完成命令替换,我发现它更易于阅读,并且允许嵌套。$(command)``"$(command)"
command
$(command)``"$(command)"
OUTPUT=$(ls -1) echo "${OUTPUT}" MULTILINE=$(ls \ -1) echo "${MULTILINE}"
引用 ( ") 对保留多行变量值很重要;它在作业的右侧是可选的,因为不执行分词,所以OUTPUT=$(ls -1)可以正常工作。
"
OUTPUT=$(ls -1)