배쉬 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 [[ /usr/bin/pgrep -f "/home / 근처 구문 오류 /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

관련 정보