조건부 grep 파이프라인 문제

조건부 grep 파이프라인 문제

저는 bash스크립팅을 배우려는 초보자인데 이 문제를 해결하는 방법을 모르겠습니다.

./elleviemme.sh: line 7: unexpected token `|', conditional binary operator expected
./elleviemme.sh: line 7: syntax error near `|'
./elleviemme.sh: line 7: `if [[ lsblk | grep -qwEo ^$dvin ]]' 

답변1

나는 당신이 쉘 변수의 값을 확장된 정규 표현식으로 사용하려고 하며 dvin그것이 명령 출력의 행 시작 부분과 일치하는지 확인하고 싶다고 가정합니다 lsblk.

이렇게 하려면 다음을 사용하지 마세요 [[ ... ]].

if lsblk | grep -q -E -w "^$dvin"; then
   # whatever code here
fi

또한 이는 -q"조용함", 즉 출력이 없음을 의미하며 사용은 와 ("일치만") -q필요하지 않음을 의미합니다 .-ogrep

[[ ... ]]일부 유틸리티의 종료 상태를 확인하려는 경우에는 이 기능을 사용하지 않습니다. 여기서는 일치 항목이 발견되었는지 알려주는 lsblk+ 파이프가 어떻게 종료되었는지 확인하고 싶습니다 .grepgrep

관련 정보