我现在已经有一段时间无法解决这个问题了。当我阅读手册和教程时,我变得更加困惑。我想要一个带有以下逻辑的if语句:
if [ -n $drupal_version ] && [[ "$drupal_version" =~ DRUPAL-[6-9]-[1-9][1-9] ]]; then
但我无法让它正常工作。
当使用“bash -x ...”脚本构造评估脚本时,工作正常,但是当作为常规脚本运行时,我的表达式不会被评估(尽管应该满足上述条件,否则运行else部分)
你能提供任何帮助吗?
答案 0 :(得分:0)
你可以使用case/esac
,没有正则表达式。可用于bash< 3.2
if [ -n "$drupal_version" ] ;then
case "$drupal_version" in
DRUPAL-[6-9]-[1-9][1-9])
echo "found"
;;
*)
echo "version not correct"
;;
esac
fi
但是,如果你想要正则表达式,请注意它是=~
而不是=
[[ $drupal_version =~ DRUPAL-[6-9]-[1-9][1-9] ]] && echo "found"
答案 1 :(得分:0)
谢谢大家的回复。双括号]]是一个特定于bash的构造,它反过来要求脚本的第一行指向#!/ bin / bash,而不是我所做的#!/ bin / sh。改变了那条线,一切正常。