0

那么我做对了吗?在 Bash 中,如果我在条件周围使用双括号,我可以使用 globbing 来测试字符串的模式:

if [[ $var = abc* ]]

如果我使用单括号,我可以测试多个条件:

if [ $var = abc123 -o $var = abc456 ]

但是我不能同时做这两个吗?

我使用的是 Bash v3.0,所以它不能识别正则表达式或 =~ 运算符。

4

2 回答 2

1

-oPOSIX 标准不推荐使用。对于 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
于 2013-05-23T14:56:43.083 回答
0

尝试这个:

if [[ $var == "abc"* ]]

我在那里找到了答案http://ubuntuforums.org/showthread.php?t=1118003

于 2013-05-23T14:54:40.377 回答