中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

shell運算(加、減、乘、除)

發布時間:2020-07-01 06:29:07 來源:網絡 閱讀:1066 作者:Abigale2018 欄目:系統運維

Abstract : 

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


1, Linux shell 變量的基本運算


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

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

  1. no1=7;

  2. no2=8;


  3. echo "------------ let command -------------"

  4. let no1++;

  5. let no2--;

  6. let no1+=3;

  7. let no2-=5;

  8. let result=no1+no2;

  9. printf "let result=%d\n" $result;

shell運算(加、減、乘、除)

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

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

  1. echo "----------------- [] operator ----------------"

  2. printf "no1:%d no2:%d \n" $no1 $no2;

  3. result1=$[ no1 + no2 ];

  4. printf "result1 = %d \n" $result1;

  5. result2=$[no1+no2 + 7];

  6. printf "result2 = %d \n" $result2;

  7. result3=$[ $no1+$no2+];

  8. printf "result3 = %d \n" $result3;

  9. no2=$[ no2 + 1 ];

  10. printf "no1 = %d no2 = %d \n" $no1 $no2;

shell運算(加、減、乘、除)

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

  2. printf "no1: %d no2: %d \n" $no1 $no2;

  3. result1=$(( no1 + no2 ));

  4. printf "result1 = %d \n" $result1;

  5. result2=$((no1+no2+3));

  6. printf "result2 = %d \n" $result2;

  7. result3=$(( $no1+$no2 + 5))

  8. printf "result3 = %d \n" $result3;

shell運算(加、減、乘、除)

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


  1. echo "---------------- expr command ---------------"

  2. printf "no1: %d no2: %d \n" $no1 $no2;

  3. result1=`expr 3 + 4`;

  4. printf "result1 = %d \n" $result1;

  5. result2=`expr $no1 + 4`;

  6. printf "result2 = %d \n" $result2;

  7. result3=`expr $no1 + $no2`;

  8. printf "result3 = %d \n" $result3;

  9. result4=`expr $no1+$no2`;

  10. printf "result4 = %d \n" $result4;

  11. result5=$(expr $no1 + 3);

  12. printf "result5 = %d \n" $result5;

  13. result6=$(expr $no1+4);

  14. printf "result6 = %d \n" $result6;

  15. result7=$(expr $no1+$no2);

  16. printf "result7 = %d \n" $result7;

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

" expr " 還支持許多運算表達式,大家在終端打個 expr --help 命令看看吧,o(∩_∩)o 哈哈。。。

上面所述的四種shell中執行變量運算的方式中不支持浮點運算!

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


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

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

  2. echo "4 * 0.56" | bc;

  3. no=48;

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

  5. echo "result1 = $result1";

shell運算(加、減、乘、除)

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

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

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

  2. echo "result2 = $result2";

shell運算(加、減、乘、除)

實驗結果所示,使用分號 " ; " 加入附加參數 scale ,指定精度為 9 位小數;

2.3 使用 bc 進行數值的記數進制間轉換:

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

  1. no=100;

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

  3. no=1000;

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

shell運算(加、減、乘、除)

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

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

  1. echo "sqrt(100) = `echo "sqrt(100)" | bc`";

  2. echo "sqrt(100) = $(echo "sqrt(100)" | bc)";

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

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

shell運算(加、減、乘、除)


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

威远县| 鄂托克前旗| 沧源| 平凉市| 繁峙县| 宁乡县| 镇安县| 盐津县| 永城市| 蕲春县| 望都县| 图木舒克市| 大渡口区| 汝州市| 张北县| 丹寨县| 万安县| 黎城县| 广水市| 五峰| 绥化市| 临桂县| 华阴市| 察哈| 和林格尔县| 乐平市| 开远市| 得荣县| 宜君县| 盐池县| 民丰县| 六枝特区| 石阡县| 新丰县| 全南县| 阳城县| 万安县| 涿鹿县| 宜昌市| 嘉鱼县| 讷河市|