getopts没有迭代shell脚本

时间:2018-03-13 12:58:18

标签: bash sh

我遇到了bash脚本上的getopts问题。特别是下面的代码似乎不能使用多于1个参数。

如果我这样做:

./script.sh - t template-name -m terminal-name 

只有模板变量才会填充,如果我这样做

./script.sh - m terminal-name -t template-name

只有终端被傀儡

 while getopts ":m:t:r:" optname;
        do
          case "${optname}" in
            "m")
              terminal = $OPTARG
              ;;
            "t")
              echo "Using template: $OPTARG"
              template = "$(cat $OPTARG)"
              ;;
            "r")
              reboot="yes"
              tput setaf 1; echo "TERMINAL WILL BE REBOOTED WHEN DONE!!"
              ;;
            "?")
              echo "Unknown option $OPTARG"
              ;;
            ":")
              echo "No argument value for option $OPTARG"
              ;;
            *)
            # Should not occur
              echo "Unknown error while processing options"
              ;;
          esac
        done
    shift $((OPTIND-1))

1 个答案:

答案 0 :(得分:1)

我相信,如果您在一段时间内使用getopts,则不需要进行转换。