我有以下函数可以循环短选项和长选项。如果存在带有短选项的匹配项,我将退出 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
代码的逻辑有些不清楚,但一种选择可能是在输入该代码块之前测试非零数量的参数:
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
}