Shell脚本条件语句执行异常,求助排查代码中存在的错误
Shell脚本条件语句错误排查修正
存在的问题
- 命令替换赋值语法错误:
cumonth= date +%m中等号两侧不能有空格,获取命令执行结果需要用$()包裹,原写法会导致cumonth变量为空,同时直接执行date命令。 - 条件判断语法不符合规范:
[ $cumonth =10 ]这类判断语句中,左方括号右侧、右方括号左侧、比较运算符两侧都必须加空格,且变量建议用双引号包裹,避免空值或带空格的内容导致语法报错。 - echo命令前多余$符号:
$echo $ytday、$echo $cmonth中的$属于多余字符,调用命令不需要加前缀$,只有调用变量时才需要加$。 - 缺少变量定义:脚本中调用的
$ytday、$cmonth没有提前定义,执行时会输出空值。
修正后的完整代码
# 正确获取当前月份赋值给变量 cumonth=$(date +%m) cudinamic= # 条件判断补全空格,变量加双引号包裹 if [ "$cumonth" = "10" ]; then cudinamic=a elif [ "$cumonth" = "11" ]; then cudinamic=b elif [ "$cumonth" = "12" ]; then cudinamic=c else cudinamic=$cumonth fi # 输出语句去掉多余的$,如果需要ytday、cmonth可自行补充定义 # echo $ytday # echo $cmonth echo "$cudinamic"
内容的提问来源于stack exchange,提问作者Luis Soriano
相关产品推荐
相关产品推荐

