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
(包括两侧的空格)进行测试,并且 - 您用 来否定该测试
!
。