Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 为什么;如果[${value}==^[:blank:][]*$]]”;无法检测空变量?_Bash_Shell - Fatal编程技术网

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:
;然后
——啊,对了。这些只是正则表达式中的元字符。谢谢您的回答。我没有区分“模式”和“正则表达式”。啊,对。这些只是正则表达式中的元字符。谢谢您的回答。我没有区分“模式”和“正则表达式”。