bash – 模仿Python“for-else”结构

Python一个方便的语言功能,称为“for-else”(类似地,“while-else”),如下所示:
for obj in my_list:
    if obj == target:
        break
else: # note: this else is attached to the for,not the if
    print "nothing matched",target,"in the list"

基本上,如果循环中断,则else被跳过,但如果循环通过条件失败(for while)或迭代结束(for for)退出,则运行else.

有没有办法在bash中做到这一点?最近我想到的是使用一个标志变量:

flag=false
for i in x y z; do
    if [ condition $i ]; then
        flag=true
        break
    fi
done
if ! $flag; then
    echo "nothing in the list fulfilled the condition"
fi

这是比较冗长的.

使用子shell:
( for i in x y z; do
    [ condition $i ] && echo "Condition $i true!" || exit;
  done ) && echo "All was well!" || echo "Something went wrong!"

相关文章

用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2...
#!/bin/bashcommand1&command2&wait从Shell脚本并行...
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/ph...
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如...
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexa...
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全...