首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >getopts不工作- bash

getopts不工作- bash
EN

Stack Overflow用户
提问于 2011-12-19 19:53:29
回答 2查看 3.8K关注 0票数 3

我正在写一个接受参数的bash脚本。我正在使用getopts来实现它。

代码语言:javascript
复制
#!/bin/bash

while getopts ":a" opt; do
  case $opt in
    a)
      echo "-a was triggered!" >&2
      ;;
    \?)
      echo "Invalid option: -$OPTARG" >&2
      ;;
  esac
done

但是上面的代码返回给我这个错误。

代码语言:javascript
复制
'etOpts_test.sh: line 4: syntax error near unexpected token `in
'etOpts_test.sh: line 4: `  case $opt in

我使用的是CentOs 5.5

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-19 19:56:42

在第4行,您可能需要case "$opt" in (引用$opt)。否则,如果它包含元字符,它可能会失败。

票数 2
EN

Stack Overflow用户

发布于 2011-12-19 20:04:23

它应该是a:,而不是:a来表示需要参数的标志,而且不应该用问号加引号,因为它用作通配符。整体代码将是(还演示了一个不带参数的标志-h ):

代码语言:javascript
复制
function usage {
  echo "usage: ..."
}

a_arg=
while getopts a:h opt; do
  case $opt in
    a)
      a_arg=$OPTARG
      ;;
    h)
      usage && exit 0
      ;;
    ?)
      usage && exit 2
      ;;
  esac
done
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8560939

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档