0

对不起,如果标题令人困惑,但这就是我的意思:

如果我有一个可以接受多个参数的脚本,我会使用 getops 命令以便根据传递的参数更轻松地控制脚本操作。但是,假设这些参数之一可以是 5 到 9 之间的任何数字,或者其他任何数字。有没有办法告诉 getops 作为命令传递给脚本的 5 到 9 之间的任何数字都应该被视为单个用户命令?

到目前为止,我的代码类似于:

#!/bin/sh
args=`getopt -o abc: -- "$@"`
eval set -- "$args"
echo "After getopt"
for i in $args
do
 case "$i" in
    -c) shift;echo "flag c set to $1";shift;;
    -a) shift;echo "flag a set";;
    -b) shift;echo "flag b set";;
done

我想看看我是否可以做类似的事情:

#!/bin/sh
args=`getopt -o ab[0-9]c: -- "$@"`
eval set -- "$args"
echo "After getopt"
for i in $args
do
 case "$i" in
    -c) shift;echo "flag c set to $1";shift;;
    -a) shift;echo "flag a set";;
    -b) shift;echo "flag b set";;
    -[0-9]) shift; echo $i;;
done
4

1 回答 1

0

不,至少不是我使用的那个(有人可能有一个增强的,但它在任何地方都不是标准的)。

对于这种特殊情况,可能可以使用:

args=`getopt -o ab0123456789c: -- "$@"`

但是,对于较大的情况,这可能很笨拙。

您是否考虑过不将它们视为个人选择?换句话说,假设它们是日志记录过程的调试级别。为什么你不能使用:

args=`getopt -o abc:d: -- "$@"`

progname -b -d4并用而不是指定它们progname -b -4

于 2010-10-22T02:02:48.347 回答