getoptを再配置する方法はありません。getopt出力を再配置します。特定の引数が毎回実行されます(指定されている場合)
gnu getoptを使用する単純なスクリプトを見てください。
#!/bin/bash
TEMP=`getopt -o abc -n 'test.sh' -- "[email protected]"`
eval set -- "$TEMP"
while true ; do
case "$1" in
-a) echo "alpha" ;shift ;;
-b) echo "bravo" ;shift ;
-c) echo "charlie" ;shift ;;
-d) echo "delta" ;shift ;;
--) shift ; break ;;
*) echo "error!" ; exit 1 ;;
esac
done
出力:
$./alpha-project -c -a -b
charlie
alpha
bravo
$./alpha-project -b -c -a
bravo
charlie
alpha
所望の出力:
今$./alpha-project -c -a -b
alpha
charlie
bravo
$./alpha-project -b -c -a
alpha
bravo
charlie
、-aが引数に配置されたどんなに、-aの場合は、最初に実行する必要があります。