那么我做对了吗?在 Bash 中,如果我在条件周围使用双括号,我可以使用 globbing 来测试字符串的模式:
if [[ $var = abc* ]]
如果我使用单括号,我可以测试多个条件:
if [ $var = abc123 -o $var = abc456 ]
但是我不能同时做这两个吗?
我使用的是 Bash v3.0,所以它不能识别正则表达式或 =~ 运算符。
-o
POSIX 标准不推荐使用。对于 POSIX 兼容性,请使用两个单独的test
命令:
if [ "$var" = abc123 ] || [ "$var" = abc456 ]
在bash
中,您可以使用 or 命令执行相同的[ ... ]
操作[[ ... ]]
,或者||
在[[ ... ]]
命令中使用:
if [ "$var" = abc123 ] || [ "$var" = abc456 ] # POSIX compatible
# No reason to use either of the next three, but the syntax is valid
if [[ "$var" = abc123 ]] || [ "$var" = abc456 ]
if [ "$var" = abc123 ] || [[ "$var" = abc456 ]]
if [[ "$var" = abc123 ]] || [[ "$var" = abc456 ]]
if [[ "$var" = abc123 || "$var" = abc456 ]] # Preferred for bash