while 루프와 grep을 동시에 사용할 수 있는 방법이 있습니까? 내 예를 보세요:
while [[ !(grep -R -h "${text}" ${path}) ]];
do
...
done
그것은 말한다:
./test_script.sh: line 1: conditional binary operator expected
./test_script.sh: line 1: expected `)'
./test_script.sh: line 1: syntax error near `-R'
./test_script.sh: line 1: `while [[ !(grep -R -h "${text}" ${path}) ]];'
답변1
명령을 대괄호 안에 넣지 마십시오. 성공 시(즉, 실패할 때까지) 반복 하려면
grep
다음을 수행하세요.while grep ... do ︙ done
grep
실패 시(즉, 성공할 때까지) 반복 하려면 다음을 수행하십시오.while ! grep ... do ︙ done
!
및 명령(예: 하나 이상의 공백 및/또는 탭)."$path"
타당한 이유가 없고 수행 중인 작업을 확실히 알고 있지 않는 한 항상 쉘 변수 참조(예: )를 인용해야 합니다 . 그에 비해 교정장치는 중요하지만, 따옴표만큼 중요하지 않습니다.이므로 and 이면 충분합니다("$text"
이 경우 and 를"$path"
사용할 필요가 없습니다"${text}"
)."${path}"
...다음과 같이
path
설정되지 않은 경우목록파일 이름, 이 경우 참조 bash/POSIX 셸에서 변수를 참조하는 것을 잊어버린 것이 보안에 미치는 영향 - 하지만 만약...?;
줄 끝에 세미콜론( )은 필요하지 않습니다while
(do
그 뒤에 세미콜론을 추가하지 않는 한). 즉,while
line과 the는do
세미콜론으로 구분되어야 합니다.그리고/또는하나 이상의 개행 문자입니다.