Shell脚本getopts optarg没有价值

时间:2014-07-29 04:12:35

标签: shell getopt getopts

有人可以检查这段代码片段并告诉我为什么当我用-p abcdef调用这个脚本时,$ OPTARG从来没有传入的参数值?

# Process command-line options passed as switches to this script
while getopts "ph:" option; do
  case "$option" in
    p)
       {
         if [ -n "$OPTARG" ]; then
           echo
           echo "##### SCRIPT ERROR: You failed to provide a host prefix. #####"
           echo
           usage
           break
         else
           echo "Setting host prefix to '$OPTARG'"
           echo
           HOST_PREFIX=$OPTARG
         fi
       } ;;
    h) usage ;;
    '?') usage ;;
    *) break ;;
  esac
done
shift "$((OPTIND-1))" # Shift off the options and optional --.

1 个答案:

答案 0 :(得分:4)

所有需要参数的选项必须由:继承,它应该写为p:h,因为h选项不需要参数。