• 双括号(()),shell与C++的桥梁


    使用语法:
    ((表达式))用来扩展Shell中的算术运算,以及赋值运算,扩展for,while,if条件测试运算.

    注意点:
    1.在双括号结构中,所有的表达式可以像c语言一样,如a++,b--
    2.在双括号结构中,所有变量可以不加入$符号前缀,也可以加入.
    3.在双括号可以进行逻辑运算,四则运算,而且运算符合数值之间可以没有空格,也可以有空格.
    4.双括号结构扩展了for,while,if条件测试运算.
    5.支持多个表达式运算,各个表达式之间用逗号,分开.
    6.使用[]时必须保证运算符与数值之间有空格,而(())时数值与运算符可以没有空格.

    四则运算

    val++    后增      

    val--     后减

    ++val    先增

    --val     先减

    为了便于理解,这里有个脚本

    #! /bin/bash
    
    num=1
    
    while ((num<100))    #数值与运算符可以没有空格,变量的使用时也可以不使用$num
    do
            echo "$num"
            ((num=++num))  #当变为((num=num++))时,结果为1的无限循环
    done

    此脚本运行的结果为输出1到99。先增与后增时,输出的结果完全不同

    逻辑运算

    #!/bin/bash
    
    a=2;
    ((b=a**3));
    
    echo $((b>=8?8:9));
    
    (($?!=1))&& echo "ok";

    在双括号内可以直接使用逻辑表达式,双小括号内的“?”则代表了shell中的if-then-else结构,如上面的((b>8?8:9))表示如果b>=8则输出8,否则输出9,这就是一个典型的C++语言,

    变量可以带$,也可以不带。

    流程控制

    #!/bin/bash
    
    num=100;
    total=0;
    
    for((i=0;i<=num;i++));
    do
        ((total+=i));
    done
    echo $total;
    
    total=0;
    i=0;
    while((i<=num));
    do
        ((total+=i,i++));
    done
    echo $total;
    
    if((total>=5050));then
        echo "ok";
    fi

    上面的两个模块,都是计算1到100间所有值的和,当结果满足预期则输出‘ok’

  • 相关阅读:
    个人便签
    秒杀系统架构分析与实战
    NPOI大数据分批写入同个Excel
    js获取鼠标坐标位置兼容多个浏览器
    月薪3万的程序员都避开了哪些坑
    怎样理解阻塞非阻塞与同步异步的区别?
    JS中的prototype
    互联网——降级论
    fedora自带OpenJDK,所以如果安装官方的JDK的话要先删除OpenJDK
    cygwin 安装完后不能进入think问题,网上99%都是错误的
  • 原文地址:https://www.cnblogs.com/shc336/p/10178120.html
Copyright © 2020-2023  润新知