首页 > 代码库 > Bash 脚本 getopts为什么最后一个参数取不到

Bash 脚本 getopts为什么最后一个参数取不到

看下面的Bash脚本:

#!/bin/bash
interval=0
count=0
pid=""
while getopts "p:d:n" arg
do
        case $arg in
        p)
                pid=$OPTARG
                echo "pid: $pid"
                ;;
        d)
                interval=$OPTARG
                echo "interval:$interval"
                ;;
        n)
                count=$OPTARG
                echo "count:$count"
                ;;
        \?)
                echo "unkonw argument"
                exit 1
                ;;
        esac
done

发现最后一个参数n总是获取不到,为什么呢?

原来,n后面少了一个冒号,参数都要要带上一个冒号,包括在最末尾的参数。

正确的写法:

while getopts "p:d:n:" arg

Bash 脚本 getopts为什么最后一个参数取不到