私はgetopts
と位置パラメータの両方を使用したいが、プログラムに位置パラメータを渡すと、getopts
が失われる。私はこのようなプログラムの実行時にbashでgetoptsと位置パラメータを組み合わせる方法は?
directory=$1
while getopts l: flag; do
case "$flag" in
l) level=$OPTARG;;
esac
done
if [ -n "$level" ]; then
echo "Level exist!"
else
echo "Level doesn't exist!"
fi
だから:
Level exist!
を、代わりにそれが返されます:
sh myprogram.sh ~/documents -l 2
を私は期待し
Level doesn't exist!
Level exist!
:
sh myprogram.sh -l 2
私は正しい出力を得る:
事は、私はこのような位置パラメータ(〜/書類)せずにプログラムを実行する場合、あります?位置のパラメータとgetopts
の両方をbashで使用するにはどうすればよいですか?
ありがとうございます!
を発見された場合にgetoptsが停止します代入 'directory = $ 1'の後に' shift'を使ってください。しかし、指摘されているように、確立された習慣に従うだけのほうがよいでしょう。 –