.AWK 확장자를 확인하는 bash 스크립트

.AWK 확장자를 확인하는 bash 스크립트
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두 경우 모두 스키마를 인용할 수 없습니다. 패턴을 인용하면 와일드카드 패턴 일치가 아닌 문자열 비교가 됩니다.

테스트가 항상 성공하는 것처럼 보이는 데에는 두 가지 이유가 있습니다.

  1. 절대 일치하지 않는 리터럴 문자열(양쪽에 공백 포함)을  *.awk 테스트합니다 .
  2. 테스트를 무효화하는 데 사용됩니다 !.

관련 정보