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