【问题标题】:Shell script getopts optarg no valueShell 脚本 getopts optarg 无值
【发布时间】:2014-07-29 04:12:34
【问题描述】:

谁能检查这段代码 sn-p 并告诉我为什么当我用 -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 --.

【问题讨论】:

    标签: shell getopt getopts


    【解决方案1】:

    所有需要参数的选项必须在:之后,它应该写成p:h,因为h选项不需要参数。

    【讨论】:

    • 这正是医生吩咐的!我对此还是有点陌生​​,但无论结果多么语义和简单,这都是一个很好的教训。非常感谢! :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-14
    • 1970-01-01
    • 1970-01-01
    • 2022-01-16
    • 2018-08-14
    • 1970-01-01
    相关资源
    最近更新 更多