Bash OR 运算符

Bash OR 运算符

我的脚本正在处理这个:

if pgrep -f "/home/tiger/bin/pymp" >/dev/null 2>&1 ; then

我希望它也检查 mpv2。

这是我到目前为止所拥有的:

if [[ /usr/bin/pgrep -f "/home/tiger/bin/pymp" ]] || [[ /usr/bin/pgrep -f "/usr/bin/mpv2" ]] >/dev/null 2>&1; then

这些是我看到的错误:

/home/tiger/bin/pauseMusic.sh:第 3 行:需要条件二元运算符 /home/tiger/bin/pauseMusic.sh:第 3 行:-f' /home/tiger/bin/pauseMusic.sh: line 3:if [[ /usr/bin/pgrep -f "/home/附近的语法错误老虎/bin/pymp"]] || [[ /usr/bin/pgrep -f "/usr/bin/mpv2" ]] >/dev/null 2>&1;然后'

答案1

[[和运算符]]用于明确的比较测试。如果你想检查两个命令结果,只需使用shell:

$ if /usr/bin/pgrep -fq "/home/tiger/bin/pymp" || /usr/bin/pgrep -fq "/usr/bin/mpv2" ; then do_stuff; fi

并非所有版本都pgrep支持-q抑制输出的参数。如果您遇到这种情况,您可以pgrep单独抑制每个重定向或组合重定向:

$ if { /usr/bin/pgrep -f "/home/tiger/bin/pymp" || /usr/bin/pgrep -f "/usr/bin/mpv2";} > /dev/null 2>&1 then do_stuff; fi

或者

$ if /usr/bin/pgrep -f "/home/tiger/bin/pymp" > /dev/null 2>&1 || /usr/bin/pgrep -f "/usr/bin/mpv2" > /dev/null 2>&1 ; then do_stuff; fi

相关内容