shell--[重要]字符串是否相等, 字符串是否为空

一. 字符串是否相等.

建议用
if [[ "${str1}" == "${str2}" ]]

if [ "${str1}" = "${str2}" ]

注意: == left and right has space!
str1=""
str2=
str3="hello"
str4="world"

# true if [[ "${str1}" == "${str2}" ]]; then echo "12 true" else echo "12 false" fi
# false if [[ "${str1}" == "${str3}" ]]; then echo "13 true" else echo "13 false" fi
# false if [[ "${str3}" == "${str4}" ]]; then echo "34 true" else echo "34 false" fi
# false # str5未声明
if [[ "${str3}" == "${str5}" ]]; then echo "35 true" else echo "35 false" fi

 

 

单个[]也是正确的

str1=""
str2=
str3="hello"
str4="world"

# true
if [ "${str1}" = "${str2}" ]; then
    echo "12 true"
else
    echo "12 false"
fi

# false
if [ "${str1}" = "${str3}" ]; then
    echo "13 true"
else
    echo "13 false"
fi

# false
if [ "${str3}" = "${str4}" ]; then
    echo "34 true"
else
    echo "34 false"
fi

# false
# str5未声明
if [ "${str3}" = "${str5}" ]; then
    echo "35 true"
else
    echo "35 false"
fi

 

 

 

二. 字符串是否为空.

建议用
if [ "${str1}" == "" ]

if [[ "${str1}" == "" ]]
if [ "$str" =  "" ] 
if [ x"$str" = x ]
if [ -z "$str" ] (-n 为非空)
注意:都要代双引号,否则有些命令会报错

建议用:
if [ "$str" =  "" ] 

if [[ "${str1}" == "" ]]

 

例子

str1=""
str2=
str3="hello"
str4="world"

# 以下都输出empty
# $str5不存在, 也是empty

if [ "$str1" = "" ]; then
    echo "empty"
fi

if [ "$str2" = "" ]; then
    echo "empty"
fi

if [ "$str5" == "" ]; then
    echo "empty"
fi

if [ -z "$str5" ]; then
    echo "empty"
fi

if [[ $str5 == "" ]]; then
    echo "empty"
fi

if [[ "$str5" == "" ]]; then
    echo "empty"
fi

if [[ "$str1" == "" ]]; then
    echo "empty"
fi

 

posted @ 2014-12-13 19:20  helloweworld  阅读(468)  评论(0编辑  收藏  举报