检查变量是否存在,使用if else bash脚本。
检查变量是否存在,使用if else bash脚本。
这个问题已经有了答案:
我尝试编写一个非常简单的bash脚本文件 bash_script.sh
#!/bin/bash if [ -z $1 ];then echo $1 else echo 'no variable' fi
在终端中,我尝试运行 ./bash_script.sh hello
,但终端上的输出是 no variable
。我在这里做错了什么?
admin 更改状态以发布 2023年5月21日
-z
操作符会在其参数为空字符串时返回true。因为hello
不是空字符串,所以执行了else
语句。
可能你本意只是想写
if [[ "$1" ]]; then echo "$1" else echo 'no variable' fi
还要注意的是何时在shell变量周围加引号(基本上总是需要加,直到你理解你不需要时),以及在Bash脚本中优先考虑使用[[
而非[
。
但可能更形式化的做法,只需要检查$#
是否等于1
,如果允许多个参数,也可以检查是否大于零。这种方法可以同样适用于空字符串参数。
为了完整起见,使原始脚本执行if
分支的方法是
./bash_script.sh ''
(或者在空参数周围使用双引号代替单引号)。