1

可能重复:
在 bash shell 脚本中使用 getopts 来获取长短命令行选项

这是我写的代码

#! /bin/bash

getopts master $1

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

这是我得到的输出-

]$ ./test123.sh -master 123
./test123.sh: line 3: getopts: `-master': not a valid identifier

如何定义用户定义的选项?

4

1 回答 1

3

我认为有几个问题。

  1. 我不明白这个 ( getopts master $1) 在做什么,你可以删除它
  2. 我认为您需要单个字符参数(即-m vs -master)

例如以下似乎工作:

#!/bin/bash
while getopts ":m" opt; do
  case $opt in
    m)
      echo "-m was triggered! $1 was entered" >&2
      ;;
    \?)
      echo "Invalid option: -$OPTARG" >&2
      ;;
  esac
done
于 2012-12-06T11:55:52.967 回答