バッシュOR演算子

バッシュ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 /bin/pymp"]] || [[ /usr/bin/pgrep -f "/usr/bin/mpv2" ]] >/dev/null 2>&1; then '

答え1

[[演算子は]]明示的な比較テストに使用されます。どちらも確認したい場合注文するその結果、シェルを使用してください。

$ 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

関連情報