
可能なオプションを 1 つだけ処理できるように、コードの一部を調整しました。関数を実行するか、ヘルプ オプションを使用して簡単な説明を入力してください。
activate-jet ()
{
local iarg=0 narg="$#"
while (( narg > 0 )); do
opt="$1" ; iarg=$(( iarg + 1 ))
case $opt in
("-h"|"--help") echo "TODO" ; return ;;
(*) break ;;
esac
done
}
可能であれば、呼び出されたときにユーザーに奇妙な動作を起こさないように、さらに簡素化したいと思います。
答え1
これは可能性としてありえます。必要なのは1つ口論したがって、ループや「大文字と小文字の区別」は必要ありません。
$ activate_jet() {
[[ "$#" -gt 1 ]] && echo "Invalid number of arguments" && return
if [[ ! -z "$1" ]]; then
if [[ "$1" = "-h" || "$1" = "--help" ]]; then
echo "TODO" && return
else
echo "Bad argument" && return
fi
fi
echo "jet activated"
}
$ activate_jet foo bar
Invalid number of arguments
$ activate_jet foo
Bad argument
$ activate_jet -h
TODO
$ activate_jet --help
TODO
$ activate_jet
jet activated
activate_jet
ここで、関数名をハイフンからアンダースコアに変更したことに注意してください。activate-jet
ハイフンが一部のシェルとは互換性がない可能性があります:
結論
- ハイフンは非標準です。シェル間の互換性が必要な場合はハイフンを使用しないでください。
- ハイフンの代わりにアンダースコアを使用します。アンダースコアはどこでも使用できます。