2017-12-17 5 views
-3

오류가 발생하지 않는 한 종료되지 않는 cmd이 있습니다. 이 명령은 문자열을 출력하므로 다른 출력을 캡처하고 각 출력에 대해 다른 명령을 실행하려고합니다.단일 종결되지 않은 명령의 여러 출력에 대해 다른 명령을 grep 및 실행하는 방법

나는 하나 개의 출력 ($str1) 하나 개의 특정 명령 ($cmd1)에 대한 명령을 처리하는 방법을 알고 :

until cmd | grep -m 1 "$str1"; do; $cmd1; done

하지만 난 $str2$cmd2 등 ...

를 가질 수 있도록하려면
+0

인가 생성'str1' 정규식 또는 그냥 문자열? 그리고'cmd1'은 단순한 명령입니까? –

+0

UL 게시물이 마감되었습니다. – tripleee

답변

1

이와 비슷한? 영업 이익은 여기에 어떤 정보를 제공 문자열의 스트림을 생성하고 오류로 나가는 만들어 공정하지 않았기 때문에

cmd | while read -r line; 
do 
    case "$line" in 
    str1) echo "do something" 
    ;; 
    str2) echo "do something else" 
    ;; 
    *) echo "ignore" 
    ;; 
    esac; 
done 

$ (for i in {1..5}; do sleep 1; echo "this is str$i"; done; exit 1) | 
    while read -r line; 
    do  
    case "$line" in  
     *str1*) echo "do something" 
     ;;  
     *str2*) echo "do something else" 
     ;;  
     *) echo "ignore" 
     ;; 
    esac; 
    done 

do something 
do something else 
ignore 
ignore 
ignore 
+0

'$ line'을 출력하는 경우 출력 내용과 일치하지 않습니다 ... – maxisme

+0

일부 출력 만 – maxisme