短くて長いオプションを繰り返す次の機能があります。for
短いオプションに一致するものがある場合は、最初のforループを終了します。しかし、関数を終了し、長いオプションのテストをスキップしたいと思います。この問題にどのように対処する必要がありますか?
xerxex ()
{
for short_opt in "${glob_pary[@]}"
do
pthis
pthat
[[ something ]] && break
done
exit_function
for long_opt in "${glob_qary[@]}" # [L]
do
qthis
qthat
[[ something ]] && break
done
}
答え1
return
関数をそのままにしてbreak
ループを停止します。
編集:しないでくださいexit
!スクリプトを対話的に実行すると、プロセスは終了します。
答え2
コードのロジックは少し不明ですが、1つのオプションは、このコードブロックを入力する前にゼロ以外の引数をテストすることです。
xerxex ()
{
if [ ${#glob_pary[@]} -gt 0 ]; then
for short_opt in "${glob_pary[@]}"
do
pthis
pthat
[[ something ]]
done
elif [ ${#glob_qary[@]} -gt 0 ]; then
for long_opt in "${glob_qary[@]}" # [L]
do
qthis
qthat
[[ something ]]
done
fi
}