最初の位置引数としてファイル名を取り、その後にオプション(./test.sh <file> [options]
)を付けるシェルスクリプトが必要です。ただし、オプションの前に位置引数を指定すると、getoptsは機能しません。私は次のコードを持っています:
while getopts "h" opt; do
case $opt in
h)
echo usage
;;
;;
esac
done
echo $1
./test.sh -h
usage
シェルに印刷しますが、シェルに./test.sh test -h
印刷test
します。したがって、オプションの前に位置引数を指定すると、そのオプションでは何も実行されません。オプションの後に位置引数がある場合は機能します(に変更echo $1
してからecho $BASH_ARGV
を呼び出します./test.sh -h test
)。オプションの前に位置引数を設定するにはどうすればよいですか?