• Shell-逻辑控制


    逻辑控制
    条件if
    分支case、select
    循环for、while、until
    break和continue
    有生之年也许你只需要用到if、for、while
    If结构

    if [ condition ];then...;fi
    if [ condition ];then...;else...;fi
    if [ condition ];then...;elif...;fi
    简单的逻辑可以使用&& ||去替代
    [ -f file ] && echo file exist || echo file not exist      条件成立后执行&&后语句,不成立执行||后语句
    条件可以用命令返回值代替

    a=/g/yaya/tmp/1.txt
    if [ -f "$a" ];
    then
    echo file exist;
    else
    echo file not exist;
    fi
    [ -f "$a" ] && echo file exist || echo file not exist

    运行结果如下:

    Case结构
    用于条件太多的情况。每一个条件最后使用两个分号结尾,不可缺少。
    case $var in
    p1)...;;
    p2)...;;
    ...
    pn)...;;
    *)...;;
    esac
    Select
    Select var in var_list;do...;done;
    菜单选择,一般与case结构一起用

    crtl+d退出

    For循环
    for(( c1;c2;c3 ));
    do
    ...;
    done
    for(( i=0;i<10;i++ ));do echo $i;done

    for(( i=0;i<10;i++ ));do echo $i;done

    运行结果如下:

    For 遍历循环
    用于递归数组,还可以递归以空格隔开的字符串序列。或者是某个命令的返回值。
    for f in $array[*];
    do
    ...
    done
    ss="aa bb cc dd";for x in $ss;do echo $x;done      默认空格进行拆解

    for x in 'ls';do echo $x;done

    ss=(aa bb cc"sss dd";for x in ${ss[@]};do echo $x;done

    While循环
    while设置条件
    i=0;
    while ((i<3));do
    echo $i;((i=i+1));
    done

    一行行的读取文件内容
    while read line;do echo $line;done < /tmp/tmp

    until
    i=0;
    until ((i>3));do
    echo $i;
    ((i+=1));
    done
    While可以替代until循环

    退出控制
    return函数返回
    exit脚本进程退出
    break退出当前循环
    continue跳过当前循环,进入下一次循环。



  • 相关阅读:
    Java里的堆(heap)栈(stack)和方法区(method)
    SpringMVC 的 Controller 返回各种视图的处理方式
    Nginx Open File Cache
    HandlerInterceptor与MethodInterceptor
    Mysql的with rollup分组统计功能(5.1以上版本)
    idea中@data不生效
    java中? extends T 和? super T解析
    java8排序
    spring boot gateway自定义限流
    spring boot添加logging不能启动且不报错
  • 原文地址:https://www.cnblogs.com/peiya/p/12587196.html
Copyright © 2020-2023  润新知