有谁知道为什么它没有任何作用?
moznostm=
moznostl=
moznosta=
moznostb=
while getopts ":m:l:b:a:h:" OPTION
do
case $OPTION in
m)
moznostm=$OPTARG
echo "bol zadany argument $moznost"
;;
l)
moznostl=$OPTARG
echo bol zadany argument $OPTARG
;;
b)
moznostb=$OPTARG
echo bol zadany argument $OPTARG
;;
a)
moznosta=$OPTARG
echo bol zadany argument $OPTARG
;;
h)
echo prazny
;;
esac
done
答案1
您必须使用选项和选项参数调用脚本。例如:
bash yourscript -l argumentfor_l
另请注意,它moznost
被打印但从未定义。
答案2
只需进行一些修改即可。
1)设置你的shebang! #!/bin/bash
如果你写 bash
2) 如果之前使用过 getopts 则重置
3) 你忘记了m
at $moznost
。
4) 普通变量名不要使用大写。
5)多用引号。" "
扩展变量时使用双引号。
6) 使用shift
.
7)您不必像这里那样定义/初始化变量moznostm=
。
#!/bin/bash
OPTIND=1
moznostm=
moznostl=
moznosta=
moznostb=
while getopts "mlbah:" opt
do
case "$opt" in
m)
moznostm=$OPTARG
echo "bol zadany argument $moznostm"
;;
l)
moznostl=$OPTARG
echo "bol zadany argument $OPTARG"
;;
b)
moznostb=$OPTARG
echo "bol zadany argument $OPTARG"
;;
a)
moznosta=$OPTARG
echo "bol zadany argument $OPTARG"
;;
h)
echo "prazny"
;;
esac
done
shift "$((OPTIND-1))"
执行脚本:
chmod +x scriptname && ./scripname -m