잘못된 명령 테스트 쉘 리눅스

잘못된 명령 테스트 쉘 리눅스

안녕하세요, 이 코드에 버그가 있습니다. 파일을 읽고 쓸 수 있는지 확인하고 파일에 "/usr/bin/python2" 문자열이 포함되어 있는지 확인하고 싶지만 셸에서 다음 오류가 인쇄됩니다.

grep /usr/bin/python2

이 문제를 어떻게 해결할 수 있나요?

if test -f $i -a test -w $i -a `grep /usr/bin/python2 < $i`
then
   echo $i
fi

답변1

if test -r "$i" -a -w "$i" && grep -q "/usr/bin/python2" "$i"
then
   echo "$i"
fi

전체 if 문을 피하고 grep을 통해 암시적으로 가독성을 확인할 수도 있습니다.

test -w "$i" && grep -l "/usr/bin/python2" "$i" 2>/dev/null

관련 정보