
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
(包括兩側的空格)進行測試,並且 - 您可以使用 否定測試
!
。