获取getopts的必需参数

时间:2018-01-02 10:30:42

标签: bash arguments getopts

我想在getopts中强制使用一些标志及其相应的参数。我这样做的方法是检查参数是否被传递给强制标志,就像这样(-i的标志和它的参数应该是强制性的):

在test.sh中:

while getopts "i:n:d:r:p:s:l:" opt; do
    case $opt in
    i) thefile=$OPTARG;;
    n) size=$OPTARG;;
    d) dmax=$OPTARG;;
    r) rmsd=$OPTARG;;
    p) penalty=$OPTARG;;
    s) sampling=$OPTARG;;
    l) log=$OPTARG;;
    h) printf "Usage: `basename $0` options -i [input_file.txt]\n \
        -i input file\n \
        -n size\n  \
        -d dist\n \
        -r rflag\n \
        -p pflag \n \
        -l 0/1 for generating log file (optional, default=1)\n \
        -h for help \n";;
    \? ) echo "Unknown option: -$OPTARG" >&2; exit 1;;
    :  ) echo "Missing option argument for -$OPTARG" >&2; exit 1;;
    *  ) echo "Unimplemented option: -$OPTARG" >&2; exit 1;;
 esac
done

if [ "s" == "s$thefile" ]
then
    echo "-i must be included with a specified file" >&2
    exit 1
fi

问题是可以像这样运行脚本: ./test.sh -i -n 4它仍以-i的值运行为" -n"。我怎样才能使这个万无一失,所以总是使用该标志并使用一个有效的字符串参数呢?

0 个答案:

没有答案