bash スクリプトのサブコマンドを実装することは可能ですか。私はこのようなことを念頭に置いています:
http://docs.python.org/dev/library/argparse.html#sub-commands
bash スクリプトのサブコマンドを実装することは可能ですか。私はこのようなことを念頭に置いています:
http://docs.python.org/dev/library/argparse.html#sub-commands
これは単純で危険なテクニックです:
#!/bin/bash
clean() {
echo rm -fR .
echo Thanks to koola, I let you off this time,
echo but you really shouldn\'t run random code you download from the net.
}
help() {
echo Whatever you do, don\'t use clean
}
args() {
printf "%s" options:
while getopts a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:p:q:r:s:t:u:v:w:x:y:z: OPTION "$@"; do
printf " -%s '%s'" $OPTION $OPTARG
done
shift $((OPTIND - 1))
printf "arg: '%s'" "$@"
echo
}
"$@"
これはすべて非常にクールですが、サブコマンドの可能性を制限するものではありません。したがって、最後の行を次のように置き換えます。
if [[ $1 =~ ^(clean|help|args)$ ]]; then
"$@"
else
echo "Invalid subcommand $1" >&2
exit 1
fi
一部のシステムでは、サブコマンドの前に「グローバル」オプションを配置できます。getopts
必要に応じて、サブコマンドの実行前にループを配置できます。shift
サブコマンドの実行に入る前に忘れないでください。OPTIND
また、サブコマンド getopts が混乱しないように、1にリセットします。