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

Unix shell脚本运行出现[: argument expected报错问题咨询

Shell脚本「[: argument expected]报错排查及解决

报错原因

  • 核心原因是条件判断语句[]中的变量未用双引号包裹:当$k、$Year1、$Month1、$Month2任意变量为空时,[命令解析时会丢失对应参数,比如$k为空的情况下,[ $k = 0 ]会被解析为[ = 0 ],左侧缺少参数,直接触发预期参数的报错。
  • 额外存在语法问题:代码中echo"erty"的echo命令和字符串之间缺少空格,会引发命令不存在的报错;提供的代码片段缺少if对应的闭合语句fi、while循环对应的闭合语句done,也会引发后续语法错误。

修复方案

将[]内的所有变量用双引号包裹,补全缺失的语法结构,修正后的代码如下:

while [ "$k" = 0 ];
do
if [ "$Year1" = "$Year2" ] && [ "$Month1" = "$Month2" ]; then
  echo "abcd"
else
  echo "erty"
fi
done

可选优化

如果使用的是Bash Shell,可以改用[[ ]]做条件判断,原生支持空变量处理,无需额外添加双引号,写法更简洁:

while [[ $k = 0 ]];
do
if [[ $Year1 = $Year2 && $Month1 = $Month2 ]]; then
  echo "abcd"
else
  echo "erty"
fi
done

内容的提问来源于stack exchange,提问作者Priya

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 18:15:03