检查变量是否存在,使用if else bash脚本。

28 浏览
0 Comments

检查变量是否存在,使用if else bash脚本。

这个问题已经有了答案

如何在Bash中检查变量是否已设置

何时在Shell变量周围加引号?

在Bash中-z是什么意思?[重复]

我尝试编写一个非常简单的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日
0
0 Comments

-z操作符会在其参数为空字符串时返回true。因为hello不是空字符串,所以执行了else语句。

可能你本意只是想写

if [[ "$1" ]]; then
    echo "$1"
else
    echo 'no variable'
fi

还要注意的是何时在shell变量周围加引号(基本上总是需要加,直到你理解你不需要时),以及在Bash脚本中优先考虑使用[[而非[

但可能更形式化的做法,只需要检查$#是否等于1,如果允许多个参数,也可以检查是否大于零。这种方法可以同样适用于空字符串参数。

为了完整起见,使原始脚本执行if分支的方法是

./bash_script.sh ''

(或者在空参数周围使用双引号代替单引号)。

0