您好我试图在变量中存储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不会将输出存储在变量中。有什么想法吗?
答案 0 :(得分:5)
失败时,dscl命令以及所有标准shell命令在stderr上输出错误消息,而$(...)
仅捕获stdout。
您必须首先合并两个流:
Output=$(dscl . -read /Users/root AuthenticationAuthority 2>&1)
答案 1 :(得分:0)
当dscl
命令成功时,其输出转到stdout
,由命令替换捕获。
如果出现错误,则会将消息打印到stderr
。
要捕获stdout
或stderr
,您可以在命令中重定向stderr
以转到stdout
:
Output=$(dscl . -read /Users/root AuthenticationAuthority 2>&1)