2017-08-07 98 views
0

我试图在开关盒循环中使用getopts。 如果我只使用getopts或只有开关的情况下工作,但是当我结合这两个getopts dos不触发。bash - 开关盒中的getopts

我有搜索了很多,但我的猫用散热片的如何组合它们的任何提及,且问题我失去了一些东西愚蠢所以给我...

这里是代码的本质。

#!/bin/bash 
case $1 in 

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

当我这样做

# bash -x test.sh op -a 

我得到

+ case $1 in 
+ getopts :a opt 

(并没有调试我什么也没有)

那是什么,我缺少这两个

结合

谢谢:)

回答

1

你应该在调用之前你op)选择的开头加上shift指令,以getopts,吃op说法本身。否则,getopts将分析的第一个参数是op,它会静静地停止(选项结束)。

+0

谢谢。工作完美 – yntnm