use*_*925 1 linux bash if-statement
我试图根据设置的内容设置$Environment变量$EnvironmentGroup.我认为结合until并且if可以工作,但我最终得到一个空变量.任何帮助表示赞赏:)
until [ -n $Environment ]
do
if [ $EnvironmentGroup -eq ^dev* ]
then Environment=dev
break
fi
if [ $EnvironmentGroup -eq ^sit* ]
then Environment=sit
break
fi
if [ $EnvironmentGroup -eq ^uat* ]
then Environment=uat
break
fi
if [ $EnvironmentGroup -eq ^prod* ]
then Environment=prod
break
fi
done
Run Code Online (Sandbox Code Playgroud)
不确定until在这种情况下提示使用了什么.不过,你真的不需要这里的循环甚至是多个条件.您可以使用二元运算符=~:
[[ $EnvironmentGroup =~ ^(dev|sit|uat|prod) ]] && Environment="${BASH_REMATCH[1]}"
Run Code Online (Sandbox Code Playgroud)
这将Environment取决于EnvironmentGroup(4个给定选项中)的开头.
而且,你不能在测试中使用globs,即[条件.
引自手册:
与正则表达式中带括号的子表达式匹配的子字符串保存在数组变量中
BASH_REMATCH.BASH_REMATCH索引为0 的元素 是匹配整个正则表达式的字符串部分.BASH_REMATCH索引n 的元素是与第n个带括号的子表达式匹配的字符串部分.