詳解Shell編程之變量數(shù)值計算(二)
OK,數(shù)值運算(上)是我看完的一小部分,大概的結(jié)束腳本如下:(回顧~~)
#!/bin/bash a=$1 b=$2 expr $1 + 1 &>/dev/null if [ "$?" -ne "0" ] then echo "請輸入數(shù)字" exit 1 fi if [ "$#" -ne "2" ] then echo "請輸入兩個數(shù)字" 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))"
這個腳本中包含了,特殊變量,數(shù)值運算命令expr判斷語法。一些簡單的if語句,特殊變量$#的用法。最后實現(xiàn)了運算~ 大家可以參考我的這篇文章:http://www.dbjr.com.cn/article/134292.htm
1、BC命令的用法
bc是UNIX&Linux下的計算器,因此輸了可以做計算器使用,還可以作為命令行計算工具使用
在我們前面說的數(shù)值運算,我們都是以整數(shù)的形式來的,但是bc這個就不一樣了 它可以處理小數(shù)~~~如下:
是不是感覺很方便的樣子,接下來將BC用在命令行下面,實現(xiàn)運算
[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 #設(shè)置變量 i=5 [root@shell-yankerp ~]# i=`echo $i+5 | bc` [root@shell-yankerp ~]# echo $i 10 [root@shell-yankerp ~]#
根據(jù)bc具有的特殊性質(zhì)來來看,如果是小數(shù),那么它處理是沒有問題,如果是整數(shù)的話,那么就使用(()) let expr就好了。
2、使用awk實現(xiàn)計算
利用awk進行計算的效果很好,尤其是處理小數(shù),很精確如下:
剖析:第一行 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內(nèi)置的,命令。
用法如下:
-p 設(shè)置提示信息
-t 設(shè)置輸入的等待時間 如下:
剖析:上圖使用了read命令 -t是輸入等到時間為10秒,那么-p就是提示的信息,在后面我們加了 o p 也就是說,當用戶輸入內(nèi)容時 他會把內(nèi)容賦值給變量 o p;
如下:
例2:
[root@shell-yankerp ~]# read -t 10 -p "請您輸入內(nèi)容:" o p 請您輸入內(nèi)容:zhangsan lisi [root@shell-yankerp ~]# echo $o zhangsan [root@shell-yankerp ~]# echo $p lisi [root@shell-yankerp ~]#
這大概就是read命令的基本用法了,但是我在看書的時間,發(fā)現(xiàn)這一章有很多的if語句和for循環(huán)實例,已經(jīng)超出了一些讀者的水平,經(jīng)過我的一些想法,結(jié)合之前的特殊變量加數(shù)值計算總結(jié)出大致的腳本內(nèi)容如下:
#!/bin/bash read -t 10 -p "請輸入任意兩個數(shù)值:" a b expr $a + 1 &>/dev/null if [ "$?" -ne "0" ] then echo /bin/bash..$0 "請輸入兩個數(shù)字" 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 "請輸入任意兩個數(shù)值:" a b 等待用戶輸入內(nèi)容,等待時間為10秒,后面的a b是變量,那么當用戶輸入了兩個數(shù)值比如說 1 2 那么1就賦值給了a 2就賦值給了b
expr $a + 1 &>/dev/null 這個其實前面的文章說過了 使用expr來判斷用戶輸入的是數(shù)值還是字符串
if [ "$?" -ne "0" ] 如果以上命令輸入的內(nèi)容不等于0 也就是輸入的不是數(shù)值
then 那么
echo /bin/bash..$0 "請輸入兩個數(shù)字" #輸出一條請輸入數(shù)字并打印當前腳本名稱
exit 1 退出腳本
fi
[ ${#a} -le 0 ] && { 這里使用了判斷,我們已經(jīng)知道a是一個變量了 如果a長度小于0判斷用戶是否輸入的是空格
echo "不能為空?。?!" 如果輸入的是空格那么就輸出一條 不能為空
exit 1 #退出腳本
}
以此類推下面的就是#b了 $#的意思之前也說過了 判斷用戶的傳參個數(shù),最后如果以上的條件全部成立,那么開始計算。
此腳本用到了:特殊變量,read命令,expr命令,$#特殊變量,$0特殊變量,if語句,(())數(shù)值計算符;
感覺整體上用到前面的內(nèi)容還是比較多的運行如下:
聲明:以上文章是<<跟著老男孩學Linux運維Shell編程實戰(zhàn)>>第五章最后一部分看完的總結(jié);
好了 本次就到這里,希望讀者快快吸收~~~
后續(xù)不斷更新 謝謝大家
Shell編程之變量數(shù)值計算(上):http://www.dbjr.com.cn/article/134292.htm
希望本文所述對你有所幫助Shell編程之變量數(shù)值計算(二)內(nèi)容就給大家介紹到這里了。希望大家繼續(xù)關(guān)注我們的網(wǎng)站!想要學習Shell編程可以繼續(xù)關(guān)注本站。
- 詳解shell 變量的高級用法示例
- 處理Shell腳本中帶有空格的變量(bash腳本)
- shell判斷一個變量是否為空方法總結(jié)
- linux中shell的變量的數(shù)值計算
- Shell編程之特殊變量和擴展變量詳解
- Shell編程之變量數(shù)值計算方法示例
- shell for循環(huán)、循環(huán)變量值付給其他shell腳本的方法
- 詳解Shell編程之變量數(shù)值計算(一)
- 淺談linux中shell變量$#,$@,$0,$1,$2的含義解釋
- 判斷Linux Shell環(huán)境變量是否存在
- Linux bash Shell中的變量類型詳解
- Linux Shell腳本系列教程(四):使用函數(shù)添加環(huán)境變量
- Linux Shell腳本系列教程(三):變量和環(huán)境變量
- 詳解shell 變量
相關(guān)文章
hive-shell批量命令執(zhí)行腳本的實現(xiàn)方法
今天小編就為大家分享一篇hive-shell批量命令執(zhí)行腳本的實現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-06-06Linux各項目環(huán)境部署記錄(換服務(wù)器部署腳本整理)
每次換便宜的服務(wù)器都要導(dǎo)致環(huán)境重新部署一遍,十分麻煩,于是把每次部署的腳本整理了一下,方便在服務(wù)器上快速進行部署,基于?CentOS2023-05-05linux中shell腳本實現(xiàn)下載完關(guān)機
本文給大家分享的是個人在實際應(yīng)用中制作的一個小程序,十分的實用,推薦給大家,有需要的小伙伴可以參考下。2015-03-03Shell腳本實現(xiàn)監(jiān)視指定進程的運行狀態(tài)
這篇文章主要介紹了Shell腳本實現(xiàn)監(jiān)視指定進程的運行狀態(tài),本文直接給出腳本代碼,需要的朋友可以參考下2015-07-07Shell腳本創(chuàng)建指定大小文件的測試數(shù)據(jù)
這篇文章主要介紹了Shell腳本創(chuàng)建指定大小文件的測試數(shù)據(jù),本文同時給出使用DD命令和Shell腳本解決這個需求,給出的腳本功能更加強大,需要的朋友可以參考下2015-03-03