检查bash中if语句中的两个条件

时间:2014-08-20 12:27:38

标签: bash if-statement conditional

我在编写if语句时遇到问题

var1=`COMMAND | grep <Something>`
if [ -n "$var1" ] && if [[ "$var1" != string ]]; then
    .
    .
    .
fi

我想写if if语句检查:

如果 var1 不为空 AND ,如果字符串(可能是hello字)不在var1中那么就可以了。

我该怎么做?

3 个答案:

答案 0 :(得分:5)

只需使用以下内容:

if [ -n "$var1" ] && [[ ! $var1 == *string* ]]; then
...
fi

查看示例:

$ v="hello"
$ if [ -n "$v" ] && [[ $v == *el* ]] ; then echo "yes"; fi
yes
$ if [ -n "$v" ] && [[ ! $v == *ba* ]] ; then echo "yes"; fi
yes

第二个条件是String contains in bash中所示内容的变体。

答案 1 :(得分:4)

其他可能性:

if [ -n "$var1" -a "$var1" != string ]; then ...

if [ "${var1:-xxx}" != "string" ]; then ...

答案 2 :(得分:1)

你应该改写这样的条件:

var1=`COMMAND | grep <Something>`
if [ -n "$var1" ] && [[ "$var1" != "string" ]]; then
.
.
.
fi

或同等的:

if test -n "$var1"  && test "$var1" != "string"
then
...
fi