【问题标题】:stuck with [: too many arguments卡在 [: 参数太多
【发布时间】:2019-04-17 14:36:50
【问题描述】:

文件删除过程因初始 if else 方法而失败,并继续显示相同的错误,例如“参数过多” 任何帮助表示赞赏

if [ "$year" -a -eq -d "${var:0:4}" ];  then
   dir = "$folder/$subfolder/$sub/$sub" 
     if [ "$month" -a  -ge -d "${var:4}" ];  then
         command $dir
     fi
elif [ "$year" -a  -gt -d "${var:0:4}" ]; then  
        command $dir
    else 
        echo "NOT VALID"
    fi

【问题讨论】:

  • 确切的错误信息是什么(没有行)?
  • 嗨 blackpearl,下面是错误看起来像..第 143 行以上代码中的第一行考虑了行号:[:参数太多
  • 由于你贴的代码不完整,那么这段代码对应的行号是多少?
  • 错误从代码的第一行开始
  • 你能把 year 和 var 的值贴出来吗?

标签: shell arguments


【解决方案1】:

删除不必要的标志。

if [ "$year" -eq "${var:0:4}" ];  then
    dir = "$folder/$subfolder/$sub/$sub" 
    if [ "$month" -ge "${var:4}" ];  then
        command $dir
    fi
elif [ "$year" -gt "${var:0:4}" ]; then  
    command $dir
else 
    echo "NOT VALID"
fi

【讨论】:

  • 感谢您的帮助。不幸的是,从代码的第一行开始出现新错误 [: : integer expression expected
  • 去掉 -d 标志。
  • @zz10 如果你是从这里的第 1 行得到的,这意味着其中一个变量是空的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-16
  • 2020-09-05
相关资源
最近更新 更多