0
我对Bash与其他语言中的case语句有点混淆。也许这是最好的直接问题。什么是if语句等价的:bash:如果相当于case语句
case $filename in
*_[0-9][0-9])
echo "fine";;
*)
echo "fail";;
esac
感谢
我对Bash与其他语言中的case语句有点混淆。也许这是最好的直接问题。什么是if语句等价的:bash:如果相当于case语句
case $filename in
*_[0-9][0-9])
echo "fine";;
*)
echo "fail";;
esac
感谢
注意,而case
版本是POSIX兼容的,下面是具体到炮弹,如bash,它采用KSH扩展。 (POSIX sh不提供除case
之外的任何本机机制,以针对变量内容而不是文件系统执行fnmatch样式模式匹配)。
if [[ $filename = *_[0-9][0-9] ]]; then
echo "fine"
else
echo "fail"
fi
更多关于[[
见BashFAQ #31,并从如何不同,内置[
和test
命令。
谢谢。我是否曾经想用[[]]使用双引号? – Ray
'[[$ foo = $ bar]]'左边的双引号是严格可选的。在右侧,他们使内容文字 - 一个确切的子字符串匹配而不是一个全局样式匹配。 –
我明白了,谢谢。 – Ray