一. 字符串是否相等.
建议用
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