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>