0
while getopts ":hufc:p:i" opt; do

  case $opt in
    h)
        usage
        exit 1
        ;;
    u)
      DOUPDATE=false
      ;;
    f)
      DOCONFIRMATION=false
      ;;
    c)
       CUSTOMERTYPE=$OPTARG
       ;;
    p)
       CUSTOMERPROFILE=$OPTARG
       ;;
    i)
        echo "LOL $INSTALL"
        INSTALL=true
        ;;
    \?)
      echo "Invalid option: -$OPTARG" >&2
      exit 1
      ;;
     :)
      echo "Option -$OPTARG requires an argument." >&2
      exit 1
      ;;
  esac
done

以上是我的 bash 代码。当我尝试在命令行中使用“i”作为参数时,没有输入大小写 i。

我应该怎么办?

4

1 回答 1

0

如果您的命令行在 i 之前有任何无效选项,则它不会解析比错误更远的地方。如果您的命令行有一个 -c 或 -p 没有后续参数进入 CustomerType 或 CustomerProfile,它将不会进一步解析。

#Examples that should work
script.sh -i
script.sh -c customerX -p profileX -i
script.sh -iz

#Examples that will not work
script.sh -hi   #-h option will exit before it parses -i
script.sh -zi   #invalid option z will exit
script.sh -c customerX -p -i #Missing required argument after -p
于 2013-05-08T03:05:47.970 回答