Hit*_*iri 4 linux bash conditional-operator
当尝试检查 bash 中是否设置或取消设置变量时,我发现了 bash 条件表达式:(-v此处:如果设置了 shell 变量(已分配值),则为 True。)。我尝试代码:
#!/bin/bash
VAR="not-empty"
if [ ! -v "$VAR" ]; then
echo "unset"
else
echo "set: $VAR"
fi
Run Code Online (Sandbox Code Playgroud)
但是,输出甚至是在代码开头unset分配的。VAR
我发现如何检查 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
检查是否已设置时不需要 $ ,因此:
if [[ ! -v VAR ]]; then
echo "unset"
else
echo "set: $VAR"
fi
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11366 次 |
| 最近记录: |