特殊字符:$ @和 - )和*)在bash的getopt

时间:2018-06-11 11:47:23

标签: bash getopt

vim  mytest.sh
  1 #!/bin/bash
  2 
  3 ARGS=`getopt -o ab: -l "argv3:,help" -- "$@"`
  4 eval set -- "${ARGS}"
  5 
  6 while true;
  7 do
  8     case "$1" in
  9         -a)
 10             echo "i am a"
 11             shift
 12             ;;
 13         -b)
 14             echo "i am b, my value is $2"
 15             shift 2
 16             ;;
 17         --argv3)
 18             echo "i am argv3, my value is $2"
 19             shift 2
 20             ;;
 21         --help)
 22             echo "i am help info"
 23             exit 0
 24             ;;
 25         --)
 26             shift
 27             break
 28             ;;
 29         *)
 30             echo "Internal error!"
 31             exit 1
 32             ;;
 33     esac
 34 done
  1. "$@"扩展为单独的参数列表。 -- "$@"在getopt中的含义是什么?如果我将第3行改为

    ARGS=`getopt -o ab: -l "argv3:,help"`
    
  2. test.sh?

    的哪个函数将消失
      第25行
    1. --)

       25         --)
       26             shift
       27             break
       28             ;;
      

      编码员想要表达的含义是什么?

    2. 第29行
    3. *)

      在什么条件或什么参数会引起“内部错误!”的输出在终端?

1 个答案:

答案 0 :(得分:0)

  1. 只是纯粹匹配包含两个减号Order
  2. 的参数

    编辑:正如@a​​xiac所提到的,this parameter usually has a special meaning, it signify the end of command options

    1. 匹配上面的参数。

    2. Wild card,可以视为--中的default,在之前没有任何案例匹配时会被触发。