日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux shell 变量 数学 运算

發布時間:2025/5/22 linux 70 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux shell 变量 数学 运算 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

出處:http://qujunorz.blog.51cto.com/6378776/1382085


Abstract :

1) ?Linux shell 中使用 let , [ ] ,(( )) 三種運算符操作 shell 變量進行簡單的基本運算;
2)Linux shell 中使用 expr 與 bc 兩個程序實現高級運算;


1, Linux shell 變量的基本運算


數值作為常規變量直接賦值給變量,并且以字符串形式保存。

1.1 let 命令可以用于直接執行基本操作:
當我使用 let 的時候,我們不使用 $ 符號引用變量。
  • no1=7;

  • no2=8;


  • echo "------------ let command -------------"

  • let no1++;

  • let no2--;

  • let no1+=3;

  • let no2-=5;

  • let result=no1+no2;

  • printf "let result=%d\n" $result;



  • 1.2 " [ ] "運算符跟 let 命令很相似:

    "[ ]" 運算符里面可以使用 $ 符號引用變量,同時支持變量名與運算符之間不帶空格。

  • echo "----------------- [] operator ----------------"

  • printf "no1:%d no2:%d \n" $no1 $no2;

  • result1=$[ no1 + no2 ];

  • printf "result1 = %d \n" $result1;

  • result2=$[no1+no2 + 7];

  • printf "result2 = %d \n" $result2;

  • result3=$[ $no1+$no2+5 ];

  • printf "result3 = %d \n" $result3;

  • no2=$[ no2 + 1 ];

  • printf "no1 = %d no2 = %d \n" $no1 $no2;



  • 1.3 " (( )) " 運算符跟 " [ ] " 運算符一樣:
    同樣支持使用 $ 符號引用變量進行基本運算,同時支持變量名與運算符之間不帶空格。
  • echo "----------------- (( )) operator --------------"

  • printf "no1: %d no2: %d \n" $no1 $no2;

  • result1=$(( no1 + no2 ));

  • printf "result1 = %d \n" $result1;

  • result2=$((no1+no2+3));

  • printf "result2 = %d \n" $result2;

  • result3=$(( $no1+$no2 + 5))

  • printf "result3 = %d \n" $result3;



  • 1.4 "expr" 命令同樣可以用于變量的基本運算:
    "expr" 命令同樣支持 $ 符號引用變量進行基本運算,但是變量與運算符之間必須使用空格作為分隔符;
    在使用 "expr" 命令對變量進行運算后,整個表達式必須使用 " · expression · " 的模式賦值給變量,即包含在" ` " 符里面,
    并且等效于 " $( expression ) " 模式。

  • echo "---------------- expr command ---------------"

  • printf "no1: %d no2: %d \n" $no1 $no2;

  • result1=`expr 3 + 4`;

  • printf "result1 = %d \n" $result1;

  • result2=`expr $no1 + 4`;

  • printf "result2 = %d \n" $result2;

  • result3=`expr $no1 + $no2`;

  • printf "result3 = %d \n" $result3;

  • result4=`expr $no1+$no2`;

  • printf "result4 = %d \n" $result4;

  • result5=$(expr $no1 + 3);

  • printf "result5 = %d \n" $result5;

  • result6=$(expr $no1+4);

  • printf "result6 = %d \n" $result6;

  • result7=$(expr $no1+$no2);

  • printf "result7 = %d \n" $result7;


  • 由上圖實驗結果所示," expr " 命令的表達式中,變量與運算符之間必須使用空格作為分隔符,
    有一點我沒搞明白的就是為什么42行的表達式已經錯了,為什么在43行才報錯。

    " expr " 還支持許多運算表達式,大家在終端打個 expr --help 命令看看吧,o(∩_∩)o 哈哈。。。
    上面所述的四種shell中執行變量運算的方式中不支持浮點運算!

    2, Linux shell 中使用 bc 命令實現高級數學運算:


    bc 命令使用 標準輸入 stdin 作為輸入;
    bc 是一個支持精確的浮點運算的高級計算器;
    bc 擁有相當多的輸入選項,并且支持數學函數調用;
    執行 bc --help 自行查看 bc 所支持的輸入選項;

    2.1 bc 命令使用標準輸入 stdin 作為輸入,并且支持浮點運算:
  • echo "----------------- bc command ----------------"

  • echo "4 * 0.56"| bc;

  • no=48;

  • result1=`echo "$no * 1.5"| bc`;

  • echo "result1 = $result1";



  • 2.2 bc 命令支持運算精度設置:

    通過附加參數可以給 bc 指定運算精度;
    附加參數使用分號 " ; " 作為分隔符;

  • result2=`echo "scale=9;$no / 3;"| bc`;

  • echo "result2 = $result2";



  • 實驗結果所示,使用分號 " ; " 加入附加參數 scale ,指定精度為 9 位小數;
    2.3 使用 bc 進行數值的記數進制間轉換:

    通過 ibase=value 作為附加參數,指定輸入變量的記數進制;
    通過 obase=value 作為附加參數,指定輸出變量的記數進制;

  • no=100;

  • echo "echo \"obase=2;ibase=10;$no\" | bc = `echo "obase=2;ibase=10;$no" | bc`";

  • no=1000;

  • echo "echo \"scale=5;obase=10;ibase=2;$no/3\" | bc = `echo "scale=5;obase=10;ibase=2;$no/3" | bc`";



  • 2.4 使用 bc 調用數學公式進行高級數學運算:

    " sqrt(value) " 執行 value 的開方運算;
    " value^index " 執行 value 的冪運算;

  • echo "sqrt(100) = `echo "sqrt(100)" | bc`";

  • echo "sqrt(100) = $(echo "sqrt(100)" | bc)";

  • echo "10^3 = `echo "10^3" | bc`";

  • echo "10^3 = $(echo "10^3" | bc)";



  • 轉載于:https://blog.51cto.com/jingshengsun888/1388435

    總結

    以上是生活随笔為你收集整理的Linux shell 变量 数学 运算的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。