14 getoptsを使用してbashスクリプトへのいくつかの引数を解析したいが、オプションリストに含まれていない残りの引数にアクセスできるようにしたい。たとえば、電話がある場合: % script -a -b param -c param -d other arguments here してただろう: while getopts "ab:c:d" opt ; do . done getoptsで処理されない「他の引数」を取得する最も簡単な方法は何ですか? bash — ティム ソース
17 引数を解析するとき、または置くときにシフトする必要があります 解析が終了した後に$((OPTIND -1))をシフトし、通常の方法で処理します。例 while getopts "ab:c:d" opt ; do . done shift $(expr $OPTIND - 1 ) while test $# -gt 0; do echo $1 shift done — ポグマ ソース 1 $ OPTINDは、各getoptsの実行後に考慮される次のオプションのインデックスであることを説明する価値があります。したがって、$ *には3つのパラメーターが含まれ、最初の有効な呼び出しに続いて2、2番目に3になります。呼び出しが無効な場合、以前の値でドロップアウトします。したがって、パラメーター1が無効な場合、OPTINDは1になります(したがって、上記の例shift $(expr 1 - 1)は安全です — 。– sibaz
0 解析の終了時に、変数$ @が行の終わりを含むようにシフトすると、 while getopts "ab:c:d" opt ; do . done shift $((OPTIND-1)) OTHERARGS=$@ — ブルーノ・マイロット ソース
shift $(expr 1 - 1)
は安全です