2016-08-29 3 views
0

아래 스크립트는 X 서버에서 열린 창의 인스턴스를 확인하고 상태에 따라 터미널에 정보를 인쇄합니다. 나는 한 줄의 터미널 명령에이를 재 작성하려고하면스크립트 및 단일 명령 줄의 IF 문

#!/bin/bash 
if [[ -z $(xwininfo -tree -root | grep whatsapp | grep chromium) ]] 
then 
     echo "IT DOES NOT EXIST"; 
else 
     echo "IT EXIST"; 
fi 

나는 이런 식으로 작업을 수행합니다

if -z $(xwininfo -tree -root | grep whatsapp | grep chromium); then echo "IT DOES NOT EXIST"; else echo "IT EXIST"; fi 

이 오류와 잘못된 상태를 반환 ...

bash: -z: command not found 
IT EXISTS 

합니까 누구라도 조언을하나요? 나는 ShellCheck을 묻는 시도했다. 그러나 나는 모든 것을 순서대로 가지고있다라고 말한다.

+3

한 줄에 모두 넣을 때'[['와']]'를 없애는 이유는 무엇입니까? – larsks

+0

그 바보 같은 웹 응용 프로그램이 괜찮다고했기 때문에. 사용해보십시오 : D 이제 괄호를 추가 했으므로 작동 중입니다 ... 감사합니다. =) – 71GA

+0

아니면 그냥'test -z ...'를 사용하십시오. –

답변

0

나는 [[]]가 필요하지 않다고 말한 온라인 배쉬 코드 검사기를 망쳤다. 이것은 나를 위해 일한 : 올바르게 http://shellcheck.net/의 조언을 다음

if [[ -z $(xwininfo -tree -root | grep whatsapp | grep chromium) ]]; then chromium --app=\\"https://web.whatsapp.com/\\"; fi & if [[ -z $(xwininfo -tree -root | grep skype | grep chromium) ]]; then chromium --app=\\"https://web.skype.com/en/\\"; fi & if [[ -z $(xwininfo -tree -root | grep Viber) ]]; then viber; fi 
+0

'chromium --app = "..."'명령을 사용할 때 인용 부호를 이스케이프 처리하려면 '\\ "와 같은 백 슬래시가 필요하므로주의하십시오.이 명령은 인용 부호를 이스케이프 처리하여 완전히 작동하지 않습니다. – 71GA

1

처럼 보였다 것이다 다음

if xwininfo -tree -root | grep whatsapp | grep -q chromium; then 
    echo "IT DOES NOT EXIST"; 
else 
    echo "IT EXIST"; 
fi 

을 ... 따라서, 한 줄의 형태 :

if xwininfo -tree -root | grep whatsapp | grep -q chromium; then echo "IT DOES NOT EXIST"; else echo "IT EXIST"; fi 

수신 한 쉘 체크 경고 SC2143에 대한 위키 페이지를 참조하십시오.