使用if else bash脚本检查变量是不是存在[重复]

Posted

技术标签:

【中文标题】使用if else bash脚本检查变量是不是存在[重复]【英文标题】:check if variable exist using if else bash script [duplicate]使用if else bash脚本检查变量是否存在[重复] 【发布时间】:2021-10-20 03:08:10 【问题描述】:

我尝试编写一个名为bash_script.sh的非常简单的bash脚本文件

#!/bin/bash

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

在终端中我尝试运行./bash_script.sh hello,但终端上的输出是no variable。我在这里做错了什么?

【问题讨论】:

@andlrc 我认为这不是问题所在,尽管这也是一个错误。直接的问题是 [ -z "$1" ] 只有在 $1 为空时才为真。 【参考方案1】:

-z 运算符在其参数为空字符串时为真。 hello 不是空字符串,所以采用else 子句。

你的意思可能很简单

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

还要注意 when to wrap quotes around a shell variable(基本上总是如此,至少在您明白什么时候可能不想这样做之前)以及在 Bash 脚本中对 [[ 的偏好优于 [

但可能更惯用,只需检查$# 是否等于1,或者如果您想允许多个参数,则大于零。无论其中一些参数是否为空字符串,这都将起作用。

为了完整起见,让您的原始脚本采用if 分支的方法是

./bash_script.sh ''

(或者在空参数周围使用双引号而不是单引号)。

【讨论】:

以上是关于使用if else bash脚本检查变量是不是存在[重复]的主要内容,如果未能解决你的问题,请参考以下文章

检查 Bash shell 脚本中是不是存在输入参数

这个'if [ -e $MY_VARIABLE ]'是不是检查linux中是不是存在变量? [复制]

如何动态检查 Bash 变量是不是存在? [复制]

sh Bash:if,then,else,echo:检查给定路径中是​​否存在任何文件

如何检查变量是不是未设置并在我的 bash 前奏中使用 set -u? [复制]

检查bash脚本中是不是存在mysql用户,出现错误