2012/03/08

shell scriptでオプション引数を除いた引数を得る

getoptsした後のOPTIND - 1分shiftすればよかったのかー。というかOPTINDなるものを知らなんだ。
#!/bin/sh

while getopts abcdef:g:h: OPT
do
        echo $OPT
done

echo $OPTIND
shift `expr "$OPTIND" - 1`
echo "$@"
$ ~/temp % ./cmdargs -a -b -c -d -e -f hoge -g fuga -h piyo a b c d
a
b
c
d
e
f
g
h
12
a b c d
$ ~/temp % ./cmdargs -a -b -c -f hoge -g fuga -h piyo a b c d 
a
b
c
f
g
h
10
a b c d


UNIXという考え方―その設計思想と哲学

2 件のコメント: