なぜ何もしないのを知っている人はいますか?
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
バッシュを使うなら
2)以前にgetoptsを使用した場合はリセット
3)m
に忘れてしまいました$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