使用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命令。