
if [ ! $var = " *.awk " ] ; then
echo "$var contains awk file"
fi
이것이 내가 가지고 있는 것이지만 그것을 실행하고 파일 이름을 입력하지 않고 .awk
여전히 awk 파일이 포함되어 있다고 말합니다.
답변1
에서는 다음 bash
을 사용하여 글로빙 테스트를 수행할 수 있습니다.
if [[ $var == *.awk ]]; then
echo '$var ends with ".awk"'
else
echo '$var does not end with ".awk"'
fi
이중 대괄호와 등호에 유의하세요.
bash
또한 이러한 테스트를 수행하는 표준 방법도 지원합니다.
case $var in
*.awk) echo '$var ends with ".awk"' ;;
*) echo '$var does not end with ".awk"' ;;
esac
두 경우 모두 패턴을 *.awk
인용할 수 없습니다. 패턴을 인용하면 globbing 패턴 일치가 아닌 문자열 비교가 됩니다.
테스트가 항상 성공하는 것처럼 보이는 이유는 두 가지입니다.
- 아마도 절대 일치하지 않을 리터럴 문자열
*.awk
(양쪽의 공백 포함)에 대해 테스트합니다. - 로 테스트를 무효화합니다
!
.