以下 bash 语法验证是否param
不为空:
[[ ! -z $param ]]
Run Code Online (Sandbox Code Playgroud)
例如:
param=""
[[ ! -z $param ]] && echo "I am not zero"
Run Code Online (Sandbox Code Playgroud)
没有输出,很好。
但是当param
除了一个(或多个)空格字符为空时,情况就不同了:
param=" " # one space
[[ ! -z $param ]] && echo "I am not zero"
Run Code Online (Sandbox Code Playgroud)
“我不是零”是输出。
如何更改测试以将仅包含空格字符的变量视为空?
我需要在if
语句中检查变量是否存在。有以下作用:
if [ -v $somevar ]
then
echo "Variable somevar exists!"
else
echo "Variable somevar does not exist!"
Run Code Online (Sandbox Code Playgroud)
与此最接近的问题是this,它实际上并没有回答我的问题。
对于“GNU bash,版本 4.2”之前的 Bash 版本,是否有任何等效-v
的test
命令选项替代方案?例如:
shopt -os nounset
test -v foobar && echo foo || echo bar
# Output: bar
foobar=
test -v foobar && echo foo || echo bar
# Output: foo
Run Code Online (Sandbox Code Playgroud)