在相当长的一段时间内,我不能绕过这个问题。当我阅读手册和教程时,我变得越来越困惑。我想要一个具有以下逻辑的if语句:
if [ -n $drupal_version ] && [[ "$drupal_version" =~ DRUPAL-[6-9]-[1-9][1-9] ]]; then但是我不能让它正常工作。
当使用"bash -x ...“对脚本进行评估时脚本构造,工作正常,但当作为正则脚本运行时,我的表达式不会被计算(即使上面的条件应该满足,但运行的是else部分)。
你能提供任何帮助吗?
发布于 2010-03-16 17:28:29
您可以使用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"发布于 2010-03-16 22:38:15
感谢大家的回复。双括号]是特定于bash的构造,而bash需要脚本的第一行指向#!/bin/bash,而不是我的脚本中的#!/bin/sh。更改了这行代码,一切都正常了。
https://stackoverflow.com/questions/2453143
复制相似问题