bash - 在这种情况下,Bash 多个 if else 条件
问题描述
我需要检查哪个条件失败。有没有更好的方法来做到这一点?如何用更少的代码行重构代码?如果/其他条件可能是一个班轮?
flag1=0
flag2=0
flag3=0
flag4=0
success=0
FAIL=""
if (( 2==2 ))
then
flag1=1
fi
# check if anything is 0
if (( $flag1==1 ))
then
FAIL="flag1"
elif (( $flag2==1 ))
then
FAIL="flag2"
elif (( $flag3==1 ))
then
FAIL="flag3"
elif (( $flag4==1 ))
then
FAIL="flag4"
fi;
echo failed is $FAIL
解决方案
您可以迭代标志的名称并使用间接参数扩展来测试每个标志的值。用于break
在测试成功后停止测试。
FAIL=""
for f in flag1 flag2 flag3 flag4; do
(( ${!f:-1} == 1 )) && FAIL=$f && break
done
推荐阅读
- javascript - 在反应中显示/隐藏显示调整大小的元素
- linux - 无法让 crontab 运行 shell 脚本
- python - Tkinter 按钮编号循环 - Tkinter 问题
- reactjs - 有没有更好的方法从子组件调用 ref.current.scrollIntoView() 以滚动到其父组件中的 ref?
- react-bootstrap - 使用反应引导程序确认密码
- javascript - 在数组元素中搜索子字符串并返回索引
- javascript - 如何从数据网格中获取行和列
- python - “DiscordUser”对象不可迭代
- java - 尝试更新到“org.jooq:jooq-codegen-maven:3.15.1”时构建失败
- vb.net - 如何在符号和提取文本之间进行正则表达式?