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