使用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脚本检查变量是不是存在[重复]的主要内容,如果未能解决你的问题,请参考以下文章
这个'if [ -e $MY_VARIABLE ]'是不是检查linux中是不是存在变量? [复制]
sh Bash:if,then,else,echo:检查给定路径中是否存在任何文件