읽은 줄에 해당 줄의 기호가 포함되어 있지 않을 *
때 작업을 수행하는 스크립트를 작성하려고 합니다.
나는 성공하지 않고 다음을 시도했습니다.
if [ grep -v -q '*' ]
이로 인해 너무 많은 매개변수 오류가 발생합니다.if [ "$(grep -v -q '*')" -eq '0' ];
이로 인해 단항 연산자 예상 오류가 발생합니다.
내가 뭘 잘못했나요?
답변1
[
if 문은 종료 상태를 생성하는 모든 것을 허용하므로 or 와 같은 쉘 내장 test
또는 둘 grep
다를 사용할 수 있습니다.
if [ "$(grep -c '*' file)" = 0 ]
then
echo 'star symbol not found'
fi
하지만 실제로는 다음을 수행할 필요가 없습니다.
if ! grep -q '*' file
then
echo 'star symbol not found'
fi
또는:
while read x
do
if ! grep -q '*' <<eof
$x
eof
then
printf '%s does not contain star symbol\n' "$x"
fi
done < file
또는:
awk '!/\*/ {print $0, "does not contain star symbol"}' file