|簡體中文

比思論壇

 找回密碼
 按這成為會員
搜索



查看: 554|回復: 0
打印 上一主題 下一主題

linux shell“(())”双括号运算符使用

[複製鏈接]

989

主題

1

好友

5288

積分

教授

Rank: 8Rank: 8

  • TA的每日心情

    2024-9-18 07:17
  • 簽到天數: 1252 天

    [LV.10]以壇為家III

    推廣值
    2
    貢獻值
    378
    金錢
    1714
    威望
    5288
    主題
    989

    回文勇士 文明人 中學生 高中生 簽到勳章 簽到達人 男生勳章 大學生 文章勇士 附件高人 附件達人 文章達人 教授

    樓主
    發表於 2012-9-18 18:25:31
    linux shell“(())”双括号运算符使用



    在刚开始学习inux shell脚本编程时候,对于它的 四则运算以及逻辑运算。估计很多朋友都感觉比较难以接受。特变逻辑运算符”[]”使用时候,必须保证运算符与算数 之间有空格。 四则运算也只能借助:let,expr等命令完成。 今天讲的双括号”(())”结构语句,就是对shell中算数及赋值运算的扩展。



    使用方法:

    语法:  

    ((表达式1,表达式2…))

    特点:

    1、在双括号结构中,所有表达式可以像c语言一样,如:a++,b--等。

    2、在双括号结构中,所有变量可以不加入:“$”符号前缀。

    3、双括号可以进行逻辑运算,四则运算

    4、双括号结构 扩展了for,while,if条件测试运算

    5、支持多个表达式运算,各个表达式之间用“,”分开

    使用实例:

    扩展四则运算



    #!/bin/sh



    a=1;

    b=2;

    c=3;



    ((a=a+1));

    echo $a;



    a=$((a+1,b++,c++));

    echo $a,$b,$c



    运行结果:

    sh testsh.sh

    2  

    3,3,4

    双括号结构之间支持多个表达式,然后加减乘除等c语言常用运算符都支持。如果双括号带:$,将获得表达式值,赋值给左边变量。

    扩展逻辑运算



    #!/bin/sh



    a=1;

    b="ab";



    echo $((a>1?8:9));



    ((b!="a"))&& echo "err2";

    ((a<2))&& echo "ok";



    运行结果:

    sh testsh.sh

    9  

    err2

    ok

    扩展流程控制语句(逻辑关系式)



    #!/bin/sh



    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



    运算结果:

    sh testsh.sh

    5050

    5050

    ok



    有了双括号运算符:[[]],[],test 逻辑运算,已经let,expr 都可以抛到一边了。
    重要聲明:本論壇是以即時上載留言的方式運作,比思論壇對所有留言的真實性、完整性及立場等,不負任何法律責任。而一切留言之言論只代表留言者個人意見,並非本網站之立場,讀者及用戶不應信賴內容,並應自行判斷內容之真實性。於有關情形下,讀者及用戶應尋求專業意見(如涉及醫療、法律或投資等問題)。 由於本論壇受到「即時上載留言」運作方式所規限,故不能完全監察所有留言,若讀者及用戶發現有留言出現問題,請聯絡我們比思論壇有權刪除任何留言及拒絕任何人士上載留言 (刪除前或不會作事先警告及通知 ),同時亦有不刪除留言的權利,如有任何爭議,管理員擁有最終的詮釋權。用戶切勿撰寫粗言穢語、誹謗、渲染色情暴力或人身攻擊的言論,敬請自律。本網站保留一切法律權利。

    手機版| 廣告聯繫

    GMT+8, 2024-9-28 03:30 , Processed in 0.026981 second(s), 27 queries , Gzip On.

    Powered by Discuz! X2.5

    © 2001-2012 Comsenz Inc.

    回頂部