You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 09:39:03