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
두 경우 모두 스키마를 인용할 수 없습니다. 패턴을 인용하면 와일드카드 패턴 일치가 아닌 문자열 비교가 됩니다.
테스트가 항상 성공하는 것처럼 보이는 데에는 두 가지 이유가 있습니다.
- 절대 일치하지 않는 리터럴 문자열(양쪽에 공백 포함)을
*.awk
테스트합니다 . - 테스트를 무효화하는 데 사용됩니다
!
.