if [[ $1 == *.(png|jpg) ]]
这是我尝试过的,但它不起作用。我需要检查是否$1
与这些文件名后缀之一匹配,这样我就可以用它做一些事情。我不知道该怎么做。我刚刚进入bash
。我已经搜索了所有这些论坛和其他论坛。我还没有找到适用于条件if
语句的东西。
答案1
@(this|that)
匹配this
或that
Bash 也支持的 Ksh 风格的扩展 glob。使用 Bash,您需要使用shopt -s extglob
来启用扩展的 glob。从 Bash 版本 4.1 开始,这些功能在内部默认启用[[ ]]
。
shopt -s extglob # needed in bash-4.0 or older
if [[ $1 == *.@(jpg|png) ]]; then
echo match
else
echo no match
fi
在 Zsh 中,你可以使用*.(jpg|png)
。
在标准 sh 中,您可以使用case
,但必须重复整个模式:
case $1 in
*.png|*.jpg) echo match;;
*) echo no match;;
esac
看: