zoukankan      html  css  js  c++  java
  • 双括号(()),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’

  • 相关阅读:
    hdu2818 Building Block
    struct2面试准备
    Spring mvc 面试
    Spring 面试详解
    Java面试必备Springioc上
    redis高级命令4 持久化机制 、事务
    redis高级命令3哨兵模式
    redis高级命令2
    redis高级命令1
    redis基础二----操作set数据类型
  • 原文地址:https://www.cnblogs.com/shc336/p/10178120.html
Copyright © 2011-2022 走看看