为什么这个简单的 bash 脚本不起作用?获取选项

Why is this simple bash script not working? getopts

我不明白为什么这行不通,因为它真的很简单。

#!/bin/bash
type='A'

while getopts "t:" OPTION
do
  case $OPTION in
    t)
       echo "The value of -t is $OPTARG"
       type=$OPTARG
       exit
       ;;
    \?)
       echo "Used for the help menu"
       exit
        ;;
  esac
done
echo $type

我得到的输出:

root@w:/etc/scripts# ./dns_add_record -t test  
The value of -t is test  
root@w:/etc/scripts# ./dns_add_record  
A  

预期输出:

root@w:/etc/scripts# ./dns_add_record -t test  
The value of -t is test  
test

有人能找出问题所在吗?这可能有些愚蠢,但我无法按照我想要的方式工作。

exit 退出 shell 脚本。

-t 案例中删除它,它只对帮助有意义。


set -x 添加到您的脚本中会得到以下跟踪:

+ type=A
+ getopts t: OPTION
+ case $OPTION in
+ echo 'The value of -t is 3'
The value of -t is 3
+ type=3
+ exit