이벤트 기반 출력 후 명령 실행

이벤트 기반 출력 후 명령 실행

다음과 같은 명령이 있습니다

iwevent

또는

tcpdump -n src 호스트 xxxx

어떤 일이 발생하면 stdout에 몇 줄을 보냅니다. 한 줄이 인쇄된 후 즉시 일부 명령을 실행하는 형태가 있습니까? 전:

iwevent | echo "Wireless event happened"

답변1

루프에서 stdin을 읽으십시오.

iwevent | while IFS= read -r line; do
    echo "[$(date "+%F %T")] - $line"
done

루프 본문에서 수행하는 작업에 따라 다음을 원할 수 있습니다.

while IFS= read -r line; do
    echo "[$(date "+%F %T")] - $line"
done < <(iwevent)

이는 파이프라인 사용으로 인한 암시적 하위 쉘 효과를 방지합니다.

답변2

무슨 뜻인지 잘 모르겠지만, 이 방향으로 뭔가가 있습니까?

while IFS= read -r line; do
    printf "%s\n%s\n" "$line" "Yohooo! One more package."
done < <(tcpdump -i any -nS)

관련 정보