来自子shell的Bash变量不存储来自grep的返回值

时间:2017-01-27 20:57:34

标签: bash shell

我在bash脚本中有以下代码行:

# Is there an external monitor connected via HDMI?
has_external=$(xrandr 2> /dev/null | grep -q 'HDMI[0-9] connected')

xrandr的输出可能包含:

HDMI1 connected (normal left inverted right x axis y axis)
HDMI2 disconnected (normal left inverted right x axis y axis)
HDMI3 disconnected (normal left inverted right x axis y axis)

对于我的生活,我无法弄清楚为什么has_external变量总是评估为真,即使“{1}}的输出中没有”HDMI1连接“。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我不确定你如何评估变量has_external它恰好是"总是如此" - 这可能是你问题的根源。

您可以使用以下条件进行相同检查:

if xrandr 2> /dev/null | grep -q 'HDMI[0-9] connected'; then
   # HDMI present
fi

或者:

xrandr 2> /dev/null | grep -q 'HDMI[0-9] connected'
rc=$?
if [[ $rc == 0 ]]; then
    # HDMI present
fi