스크립트 파일에서 다른 파일로 패턴을 읽는 데 문제가 있습니다. 기본적으로 한 파일의 출력은 다른 스크립트 파일의 입력으로 사용되어야 합니다. maze_gen의 출력은 # 및 공백 기호의 배열입니다. 예제 5 아래 7은 출력의 높이와 너비를 나타냅니다.
if [`./maze_gen 5 7 | grep -E "[^# ]"` ]; then
echo no
else
echo yes
fi
maze_gen
일련의 공백을 생성하는 파일 입니다 #
. 이는 현재 작업 중인 입력 파일로 수신됩니다. 내 코드에 문제가 있습니다. 입력에 #
문자만 있는지 확인할 수 없습니다.
답변1
테스트하려는 출력에 ./maze_gen 5 7
공백과 해시 이외의 문자가 포함된 것 같습니다.
다음을 사용하면 이 작업을 보다 효율적으로 수행할 수 있습니다.
if ./maze_gen 5 7 | grep -q '[^ #]'
then
echo no
else
echo yes
fi
실제로는 그렇지 않습니다.정제표현식과 일치하는 줄입니다. 대신 grep -q
패턴이 일치하는 즉시 종료되고 grep
종료 상태는 명령문에서 사용할 if
분기( echo no
또는 echo yes
)를 결정하는 데 사용됩니다.
패턴이 일치하면 유틸리티가 입력 처리를 중지하고 셸이 문자열 비교 테스트에 사용하기 grep
위해 출력을 저장할 필요가 없기 때문에 이는 사용자가 시도하는 것보다 더 효율적입니다 .grep
코드에 구문 오류가 있으므로 코드가 실행되지 않습니다. [
주변에 공간이 필요합니다.
또한 -E
일부 구현은 확장 정규식을 활성화하는 데 사용될 수 있습니다 grep
. 귀하의 경우 표현식은 기본 정규 표현식이므로 이 작업을 수행할 필요가 없습니다.