【发布时间】:2021-04-18 16:06:44
【问题描述】:
在尝试检查 bash 中是否设置了变量时,我发现了 bash 条件表达式:-v(here:如果设置了 shell 变量(已分配值)则为真。)。我试试代码:
#!/bin/bash
VAR="not-empty"
if [ ! -v "$VAR" ]; then
echo "unset"
else
echo "set: $VAR"
fi
但是,即使我在代码开头分配了VAR,输出也是unset。
我找到了How to check if a variable is set in Bash? 问题,并尝试将! -v 替换为-z 以检查字符串变量VAR。输出为set: non-empty。
任何人都可以帮助解释第一种情况(使用-v 表达式)为什么输出为unset?
我的 bash 版本:
GNU bash,版本 5.0.17(1)-release (x86_64-pc-linux-gnu) 版权所有 (C) 2019 Free Software Foundation, Inc. 许可 GPLv3+:GNU GPL 版本 3 或更高版本http://gnu.org/licenses/gpl.html
【问题讨论】:
标签: linux bash conditional-operator