如何在变量中存储bash命令的输出

时间:2015-03-12 17:17:46

标签: macos bash

您好我试图在变量中存储OS X命令,但我遇到了问题。这是我的代码:

#! /bin/bash
Output=$(dscl . -read /Users/root AuthenticationAuthority)
Check="No such key: AuthenticationAuthority"  

if [ "$Output" = "$Check" ]
    then
       echo "OK"
      else
    echo "FALSE"
fi

之前我已经使用"默认读取等命令完成了这项工作...."它工作正常,但dscl。 -read不会将输出存储在变量中。有什么想法吗?

2 个答案:

答案 0 :(得分:5)

失败时,dscl命令以及所有标准shell命令在stderr上输出错误消息,而$(...)仅捕获stdout。

您必须首先合并两个流:

Output=$(dscl . -read /Users/root AuthenticationAuthority 2>&1)

答案 1 :(得分:0)

dscl命令成功时,其输出转到stdout,由命令替换捕获。

如果出现错误,则会将消息打印到stderr

要捕获stdoutstderr,您可以在命令中重定向stderr以转到stdout

Output=$(dscl . -read /Users/root AuthenticationAuthority 2>&1)