shell 脚本参数个数超过9个的问题

376 阅读1分钟

shell脚本默认情况下最大为9个参数,

需要取第10、第11个等,需要将10改为10改为{10}的方式来取。

否则取到10,10, 11内容为 -B0 -B1

批量将脚本中的

  •    eval value="""Index

改为

  •    eval value=""{Index}

sed -i "s#eval value="$"$Index#eval value="$"{$Index}#g" *.sh

通用参数处理代码段:

#__MAIN__
Index=0
ProName=`echo "$0" | awk -F/ '{print $NF}'`

while [ $Index -lt $# ]
do
    Index=`expr $Index + 1`
    eval value="$"{$Index}
    case $value in
        -cdm)
          IsCdmStoragePkg=1;
          ;;
        -nodown)
          NotRedownloadPkg=1;
          ;;
        -urlPrefix)
          Index=`expr $Index + 1`
          if [ $Index -le $# ]
          then
              eval urlPrefix="$"{$Index}
          fi
          ;;
        -pkgSubfix)
          Index=`expr $Index + 1`
          if [ $Index -le $# ]
          then
              eval pkgNameSubfix="$"{$Index}
          fi
          ;;
        -pkgType)
          Index=`expr $Index + 1`
          if [ $Index -le $# ]
          then
              eval pkgType="$"{$Index}
          fi
          ;;
        -pkgVersion)
          Index=`expr $Index + 1`
          if [ $Index -le $# ]
          then
              eval pkgVersion="$"{$Index}
          fi
          ;;
        -h)
          FunUsage $ProName
          exit 0
          ;;
        *)
          FunUsage $ProName
          exit -1
          ;;
    esac
done