shell中let 命令與Expr命令介紹

來源:互聯網
上載者:User

let 命令介紹:

Let命令讓BASH shell執行算數運算的操作,使用let,可以比較兩運算數值或者執行加減乘除等運算操作,這種操作往往用於shell程式中的流程式控制制結構或者執行需要的運算,注意let只能執行整數的相關操作,運算結果也只能儲存整數。

使用方法如下:

let 變數名 = 變數1 運算子 變數2

 

常見的算數操作分類:

加法:+

減法:-

除法:/

乘法:*

取餘數:%

 

Let命令使用方法舉例:

注意:和c語言類似,;let i=$i+1可以寫成let i++來簡化書寫

Shell執行個體1:

[root@ChangerLee 運算比較符]#cat let_op.sh #!/bin/bash#some examples about let  num1=106num2=10num3=5#oprating let res1=${num1}+${num2}+${num3}let res2=${num1}-${num2}-${num3}let res3=${num1}*${num2}*${num3}let res4=${num1}/${num2}/${num3}let res5=${num1}%${num2}%${num3}#output resultsecho "num1+num2+num3=${res1}"echo "num1-num2-num3=${res2}"echo "num1*num2*num3=${res3}"echo "num1/num2/num3=${res4}"echo "num1%num2%num3=${res5}"[root@ChangerLee 運算比較符]#sh let_op.sh num1+num2+num3=121num1-num2-num3=91num1*num2*num3=5300num1/num2/num3=2num1%num2%num3=1



注意num1/num2/num3得到結果為整數2,說明let只能保留整數結果並將小數部分截取掉

Shell執行個體2:

[root@ChangerLee 運算比較符]#cat let_op_v1.sh #!/bin/bash# let and while i=10num=1 while [ 1 ]doif [ $num -le $i ]then echo "$num"elsebreakfilet num=$num+1done[root@ChangerLee 運算比較符]#sh let_op_v1.sh 12345678910

Let不適用於小數之間的運算:

Shell執行個體3:

<span style="font-size:18px;"><strong>[root@ChangerLee 運算比較符]#let 1+1[root@ChangerLee 運算比較符]#let 1.1+1-bash: let: 1.1+1: syntax error: invalid arithmetic operator (error token is ".1+1")</strong></span>


 

Expr命令介紹:

Expr在linux命令中和let功能類似,它作算數運算時,只能進行整數類型的運算,不能儲存小數結果。Expr還可以進行字串之間的運算。

Expr的使用方法如下:

Expr expression1 操作符expression2

操作符必須加’\’用於轉義,並且操作符和兩個expression之間必須有空格(這一點與let不同)且Expr 不適合小數的運算。

常見的算數操作分類:

加法:+

減法:-

乘法:*

除法:/

取餘數:%

Expr使用方法舉例:

(1)執行常用的算數運算操作:

Shell執行個體4:

[root@ChangerLee 運算比較符]#cat expr_op_v1.sh #!/bin/bash#an exmple of expr num1=56num2=10num3=5echo "num1:$num1  num2:$num2  num3:$num3"#operating numres1=`expr $num1 \+ $num2 \+ $num3`res2=`expr $num1 \- $num2 \- $num3`res3=`expr $num1 \* $num2 \* $num3`res4=`expr $num1 \/ $num2 \/ $num3`res5=`expr $num1 \% $num2 \% $num3`#output resultsecho "num1+num2+num3=$res1"echo "num1-num2-num3=$res2"echo "num1*num2*num3=$res3"echo "num1/num2/num3=$res4"echo "num1%num2%num3=$res5"[root@ChangerLee 運算比較符]#sh expr_op_v1.shnum1:56  num2:10  num3:5num1+num2+num3=71num1-num2-num3=41num1*num2*num3=2800num1/num2/num3=1num1%num2%num3=1

</pre><p><strong><span style="font-family:Microsoft YaHei;font-size:18px;">Shell執行個體5:</span></strong></p><p><strong><span style="font-family:Microsoft YaHei;font-size:18px;"></span></strong></p><pre name="code" class="html">[root@ChangerLee 運算比較符]#cat expr_op_v2.sh #!/bin/bash# let and while i=10num=1 while [ 1 ]doif [ $num -le $i ]then echo "$num"elsebreakfinum=`expr $num \+ 1`done[root@ChangerLee 運算比較符]#sh expr_op_v2.sh 12345678910 



Shell執行個體6:

[root@ChangerLee 運算比較符]#expr 1 \+ 12[root@ChangerLee 運算比較符]#expr 1.1 \+ 1expr: non-integer argument


(2)執行常用的字串操作

1.輸出字串的長度

<strong><span style="font-size:18px;">[root@ChangerLee 運算比較符]#cat expr_str.sh #!/bin/bash#output length str str1="this str length is 21"str2="blog.csdn.net/changerjjlee" echo '${#str1}'${#str1}expr length $str2[root@ChangerLee 運算比較符]#sh expr_str.sh ${#str1}2126</span></strong>



注意:expr只能輸出不含有空格的字串

2.取字串的操作

expr substr $string $postion $length 位置編號從1開始

echo ${$string:$postion:$length}位置編號從0開始

Shell執行個體7:

[root@ChangerLee 運算比較符]#string="abcdefghi"[root@ChangerLee 運算比較符]#expr substr $string 1 3abc[root@ChangerLee 運算比較符]#echo ${string:0:3}abc



(3)字串串連的操作

Shell執行個體8:

<strong>[root@ChangerLee 運算比較符]#cat con_str_v1.sh #!/bin/bash#connection of strings str1="abc"str2="def ghi"str3="${str1}$str2" echo "str1=$str1"echo "str2=$str2"echo "str3=$str3"[root@ChangerLee 運算比較符]#sh con_str_v1.sh str1=abcstr2=def ghistr3=abcdef ghi</strong>



 

(4)字串替換的操作

 

Shell執行個體9:

<strong><span style="font-size:18px;">[root@ChangerLee 運算比較符]#cat con_str_v2.sh #!/bin/bash string="blog.csdn.net/changerjjlee"echo ${string/c/C}#只替換一次echo ${string//c/C}#全部替換[root@ChangerLee 運算比較符]#sh con_str_v2.sh blog.Csdn.net/changerjjleeblog.Csdn.net/Changerjjlee</span></strong> 



相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.