国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > Linux Shell > 正文

詳解Shell編程之變量數值計算(二)

2020-07-27 18:49:14
字體:
來源:轉載
供稿:網友

OK,數值運算(上)是我看完的一小部分,大概的結束腳本如下:(回顧~~)

#!/bin/bash a=$1 b=$2 expr $1 + 1 &>/dev/null if [ "$?" -ne "0" ]  then   echo "請輸入數字"   exit 1 fi  if [ "$#" -ne "2" ]  then   echo "請輸入兩個數字"     exit 1 fi  echo "a+b=$((a+b))" echo "a-b=$((a-b))" echo "a*b=$((a*b))" echo "a/b=$((a/b))" echo "a%b=$((a%b))" 

這個腳本中包含了,特殊變量,數值運算命令expr判斷語法。一些簡單的if語句,特殊變量$#的用法。最后實現了運算~ 大家可以參考我的這篇文章:http://m.survivalescaperooms.com/article/134292.htm

1、BC命令的用法

bc是UNIX&Linux下的計算器,因此輸了可以做計算器使用,還可以作為命令行計算工具使用

在我們前面說的數值運算,我們都是以整數的形式來的,但是bc這個就不一樣了 它可以處理小數~~~如下:


是不是感覺很方便的樣子,接下來將BC用在命令行下面,實現運算

[root@shell-yankerp ~]# echo 1+2 | bc 3 [root@shell-yankerp ~]# echo 1.5+1.5 | bc 3.0 [root@shell-yankerp ~]# echo 2*2 | bc 4 [root@shell-yankerp ~]# echo 8.5-8.5 | bc 0 [root@shell-yankerp ~]#  

利用BC配置變量運算

[root@shell-yankerp ~]# i=5  #設置變量 i=5 [root@shell-yankerp ~]# i=`echo $i+5 | bc` [root@shell-yankerp ~]# echo $i  10 [root@shell-yankerp ~]#  

根據bc具有的特殊性質來來看,如果是小數,那么它處理是沒有問題,如果是整數的話,那么就使用(()) let expr就好了。

2、使用awk實現計算

利用awk進行計算的效果很好,尤其是處理小數,很精確如下:


剖析:第一行 echo 7.1 3.23 | 讓awk處理 '{print 打印 $1 為7.1 - $2為3.23}'得出3.87

第二行:echo 4 5 | 讓awk進行處理 '{print  ($1為4那么在加4等于8)最后*$2 也就是乘5} ' 得出40

$[]運算

[root@shell-yankerp ~]# a=5 [root@shell-yankerp ~]# a=$[a+10] [root@shell-yankerp ~]# echo $a 15 [root@shell-yankerp ~]# echo $[2*3] 6 [root@shell-yankerp ~]# echo $[2/3] 0 [root@shell-yankerp ~]#  

3、基于Shell變量輸入read命令的運算

read命令

Shell變量除了可以直接賦值或者腳本傳參外,還可以使用read命令從標準輸入中獲取,read命令為bash內置的,命令。

用法如下:

-p 設置提示信息

-t 設置輸入的等待時間 如下:


剖析:上圖使用了read命令 -t是輸入等到時間為10秒,那么-p就是提示的信息,在后面我們加了 o p 也就是說,當用戶輸入內容時 他會把內容賦值給變量 o p;

如下:


例2:

[root@shell-yankerp ~]# read -t 10 -p "請您輸入內容:" o p 請您輸入內容:zhangsan lisi [root@shell-yankerp ~]# echo $o zhangsan [root@shell-yankerp ~]# echo $p lisi [root@shell-yankerp ~]#  

這大概就是read命令的基本用法了,但是我在看書的時間,發現這一章有很多的if語句和for循環實例,已經超出了一些讀者的水平,經過我的一些想法,結合之前的特殊變量加數值計算總結出大致的腳本內容如下:

#!/bin/bash read -t 10 -p "請輸入任意兩個數值:" a b  expr $a + 1 &>/dev/null if [ "$?" -ne "0" ]  then   echo /bin/bash..$0 "請輸入兩個數字"   exit 1 fi [ ${#a} -le 0 ] && {  echo "不能為空?。。?  exit 1 } [ ${#b} -le 0 ] && {  echo "不能為空!??!"  exit 1 }  echo "a+b=$((a+b))" echo "a-b=$((a-b))" echo "a/b=$((a/b))" echo "a*b=$((a*b))" echo "a**b=$((a**b))" 

剖析:

read -t 10 -p "請輸入任意兩個數值:" a b 等待用戶輸入內容,等待時間為10秒,后面的a b是變量,那么當用戶輸入了兩個數值比如說 1 2 那么1就賦值給了a 2就賦值給了b

expr $a + 1 &>/dev/null 這個其實前面的文章說過了 使用expr來判斷用戶輸入的是數值還是字符串

if [ "$?" -ne "0" ]   如果以上命令輸入的內容不等于0 也就是輸入的不是數值
  then         那么
    echo /bin/bash..$0 "請輸入兩個數字"    #輸出一條請輸入數字并打印當前腳本名稱
    exit 1                退出腳本
fi

[ ${#a} -le 0 ] && {       這里使用了判斷,我們已經知道a是一個變量了 如果a長度小于0判斷用戶是否輸入的是空格
  echo "不能為空?。?!"   如果輸入的是空格那么就輸出一條 不能為空
  exit 1    #退出腳本
}

以此類推下面的就是#b了  $#的意思之前也說過了 判斷用戶的傳參個數,最后如果以上的條件全部成立,那么開始計算。

此腳本用到了:特殊變量,read命令,expr命令,$#特殊變量,$0特殊變量,if語句,(())數值計算符;

感覺整體上用到前面的內容還是比較多的運行如下:

聲明:以上文章是<<跟著老男孩學Linux運維Shell編程實戰>>第五章最后一部分看完的總結;

好了 本次就到這里,希望讀者快快吸收~~~ 

后續不斷更新 謝謝大家

Shell編程之變量數值計算(上):http://m.survivalescaperooms.com/article/134292.htm

希望本文所述對你有所幫助Shell編程之變量數值計算(二)內容就給大家介紹到這里了。希望大家繼續關注我們的網站!想要學習Shell編程可以繼續關注本站。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 新丰县| 连城县| 瓮安县| 依兰县| 内乡县| 建阳市| 宁安市| 南汇区| 香河县| 米脂县| 建瓯市| 西乌珠穆沁旗| 修武县| 台北县| 商都县| 岑巩县| 白山市| 休宁县| 晋中市| 托克逊县| 南开区| 济宁市| 民乐县| 天等县| 常熟市| 滨州市| 辽源市| 达州市| 长宁县| 奉节县| 当涂县| 达孜县| 凭祥市| 青龙| 新竹县| 韶山市| 巨鹿县| 漳州市| 驻马店市| 贵南县| 四子王旗|