我正在尝试使用getopts来解析bash版本4.2.45中的一些命令行参数。不幸的是,当我用-r1 apple -r2 banana -n hello -k 56运行这个脚本时,我没有获得r1或r2的任何输出。 e.g。
./script.sh -r1 apple -r2 banana -n hello -k 56
hello 56
下面是script.sh
read1=
read2=
name=
ks=
outdir=
threads=
while getopts "r1:r2:n:k:o:t" OPTION
do
case $OPTION in
r1) read1="$OPTARG" ;;
r2) read2="$OPTARG" ;;
n) name="$OPTARG" ;;
k) ks="$OPTARG" ;;
o) outdir="$OPTARG" ;;
t) threads="$OPTARG" ;;
esac
done
echo $read1 $read2 $name $ks
当我改变r1-> r和r2-> x时,我看到:
apple banana hello 56
正如我所料。数字真的不允许作为选项,还是我还缺少其他的东西?
答案 0 :(得分:2)
单个-
的短选项只能是一个字符。 r1:
创建了一个-r
选项和一个带有参数的-1
选项。
如果您需要长选项,请从getopts
切换到getopt
并使用-l
选项,这样您就可以使用带有两个短划线的--long
个参数。
./script.sh --r1 apple --r2 banana -n hello -k 56