Bash 为什么;如果[${value}==^[:blank:][]*$]]”;无法检测空变量?
我尝试了以下三种代码来检测空变量Bash 为什么;如果[${value}==^[:blank:][]*$]]”;无法检测空变量?,bash,shell,Bash,Shell,我尝试了以下三种代码来检测空变量 unset value if [[ -z ${value} ]]; then echo "value is judged as empty by [[ -z ]] : value = '${value}'" fi if [[ ${value} == ^[[:blank:]]*$ ]]; then echo "value is judged as empty by [[ == ]] : value = '${value}'" fi if echo $
unset value
if [[ -z ${value} ]]; then
echo "value is judged as empty by [[ -z ]] : value = '${value}'"
fi
if [[ ${value} == ^[[:blank:]]*$ ]]; then
echo "value is judged as empty by [[ == ]] : value = '${value}'"
fi
if echo ${value} | grep -E "^[[:blank:]]*$"; then
echo "value is judged as empty by grep -E "^[[:blank:]]*$" : value = '${value}'"
fi
结果如下:
value is judged as empty by [[ -z ]] : value = ''
value is judged as empty by grep -E ^[[:blank:]]* : value = ''
为什么第二个不起作用?请告诉我。第二个是模式,不是正则表达式。它只匹配至少有3个字符的字符串:
^
、一个空白字符、零个或多个任意字符和$
。要匹配表示零个或多个空白字符的正则表达式,请使用=~
运算符
if [[ $value =~ ^[[:blank:]]*$ ]]; then
第二个是模式,不是正则表达式。它只匹配至少有3个字符的字符串:
^
、一个空白字符、零个或多个任意字符和$
。要匹配表示零个或多个空白字符的正则表达式,请使用=~
运算符
if [[ $value =~ ^[[:blank:]]*$ ]]; then
若要使用正则表达式,请使用
=~
:if[[${value}=~^[:blank:]*$];然后
。如果[[$value=*([[:blank:]])],也可以使用glob:;然后
-要使用正则表达式,请使用=~
:if[[${value}=~^[:blank:]*$];然后
。如果[[$value=*([[:blank:]])],也可以使用glob:;然后
——啊,对了。这些只是正则表达式中的元字符。谢谢您的回答。我没有区分“模式”和“正则表达式”。啊,对。这些只是正则表达式中的元字符。谢谢您的回答。我没有区分“模式”和“正则表达式”。