使用getopts
可以很方便地提取剩余未标记的参数。下面是一个示例代码:
#!/bin/bash
while getopts ":a:b:c:" opt; do
case $opt in
a) arg1="$OPTARG";;
b) arg2="$OPTARG";;
c) arg3="$OPTARG";;
\?) echo "无效的选项: -$OPTARG" >&2;;
esac
done
shift $((OPTIND-1))
remaining_args=("$@")
echo "arg1: $arg1"
echo "arg2: $arg2"
echo "arg3: $arg3"
echo "剩余参数: ${remaining_args[@]}"
在这个示例中,我们定义了三个选项:-a
,-b
和-c
。使用getopts
命令解析输入参数,并将对应的值存储在变量arg1
,arg2
和arg3
中。然后,我们使用shift
命令将已经处理的参数移除,剩余的参数存储在数组remaining_args
中。最后,我们打印出每个选项的值以及剩余的参数。
假设脚本名为script.sh
,我们可以运行以下命令来测试:
./script.sh -a value1 -b value2 -c value3 arg1 arg2 arg3
输出应该是:
arg1: value1
arg2: value2
arg3: value3
剩余参数: arg1 arg2 arg3
注意:getopts
命令只能解析单个字符的选项,如果需要解析多字符的选项,可以考虑使用getopt
命令。