Bash脚本使用if else判断变量是否存在时运行结果异常如何解决
问题原因
- 核心逻辑写反:
test命令(即[)的-z选项用于判断目标字符串长度为0(空值),你传入参数hello时$1非空,[ -z $1 ]判断结果为假,自然进入else分支输出no variable。 - 存在语法隐患:变量
$1没有用双引号包裹,当参数为空、包含空格或特殊字符时,会触发Shell解析错误。
修正后的代码
你可以选择把if分支的逻辑反过来,先判断参数为空的场景:
#!/bin/bash if [ -z "$1" ]; then echo 'no variable' else echo "$1" fi
也可以用-n选项判断参数非空,匹配你原来的分支顺序:
#!/bin/bash if [ -n "$1" ]; then echo "$1" else echo 'no variable' fi
内容的提问来源于stack exchange,提问作者UMR
相关产品推荐
相关产品推荐

