如何从变量中的命令获取标准输出

如何从变量中的命令获取标准输出

当我们想知道 ssh 的标准输出是什么时,我们就这样做

ssh  $linux_server "cat /proc/uptime"

[[ $? -eq 0 ]] && ssh is ok

但是在以下情况下如何知道 ssh 标准输出?

 UPTIME=`    ssh $linux_server "cat /proc/uptime"  `

答案1

对于大多数 shell(因此也是最可移植的)执行此操作的标准方法是使用反引号 (`),并且由于您必须 ssh 的 arg 不需要引号,但结果可能是您会写:

UPTIME="`ssh $linux_server cat /proc/uptime`"

或者您可以通过使用 $() 来特定于 bash (以及其他一些 shell,但不像反引号那么通用):

UPTIME="$(ssh $linux_server cat /proc/uptime$)"

请注意,由于反引号使用相同的东西来分隔命令,因此它们不能嵌套。这是 bash 结构的优点之一。它也不需要分叉子 shell 来稍微提高执行效率。

阅读 bash 手册页以获取更多详细信息。

相关内容