如何解析无效选项?

时间:2016-05-12 19:56:56

标签: bash

我正在编写以下脚本来解析一些选项:

#!/bin/bash
while [[ $# > 1 ]]
do
key="$1"
case $key in
    -i|--inbound)
        inbound="true"
    shift # past argument
    ;;
    -o|--outbound)
        outbound="true"
    shift # past argument
    ;;
    *)
        echo "hola"
        exit 1

    ;;
esac
shift # past argument or value
done
echo $inbound
echo $outbound

问题是我想终止程序,如果收到无效选项,我尝试了以下内容:

*)
            exit 1
            echo "invalid option"


        ;;

但是当我运行这样的程序:bash script.sh -invalid,发生任何事情,我想感谢任何解决这个问题的建议,我想要的输出想:

invalid option

1 个答案:

答案 0 :(得分:2)

  

while [[ $# > 1 ]]

应该是

while (($# >= 1))
  1. 您需要进行数字比较,而不是字符串比较。虽然在这种情况下,它没有任何区别,但如果您与2进行比较,则会产生很大的不同,因为字符串10小于字符串2

  2. 无论如何,如果您使用一个参数调用脚本,$#将是一个。所以大于比较是不正确的。

  3. 最后,如果你真的有:

        exit 1
        echo "hola"
    

    永远不会执行回声,因为exit首先会发生。