1. 程式人生 > >Linux基礎學習——Shell基礎——Bash變數—數值運算與運算子和變數測試與內容替換

Linux基礎學習——Shell基礎——Bash變數—數值運算與運算子和變數測試與內容替換

一、數值運算與運算子:

思考引入:

[[email protected] sh]# aa=11
[[email protected] sh]# bb=22
[[email protected] sh]# cc=$aa+$bb
[[email protected] sh]# echo $cc
11+22

如上:Linux中,shell中的變數型別,都是字串型別,在此表示加號連線了兩個字串,然後把該字串賦給了cc,於是如上

1、declare 宣告變數型別

[[email protected] ~]# declare 【+/-】【選項】變數名

選項:

    -: 給變數設定型別屬性

    +:取消變數的型別屬性

    -i :將變數宣告為整數型(integer)

    -x :將變數宣告為環境變數

    -p :顯示指定變數的被宣告的型別

[[email protected] sh]# aa=11
[[email protected] sh]# bb=22
[[email protected] sh]# cc=$aa+$bb
[[email protected] sh]# echo $cc
11+22
[
[email protected]
sh]# declare -p aa declare -- aa="11" [[email protected] sh]# export aa #習慣於用export 將某變數設定為環境變數,或者說是為其新增-x屬性 [[email protected] sh]# declare -p aa declare -x aa="11" [[email protected] sh]#

2、數值運算——

方法1:

[[email protected] sh]# aa=11
[[email protected]
sh]# bb=22 #如上為給變數賦值方法 [[email protected] sh]# declare-i cc=$aa+$bb -bash: declare-i: command not found [[email protected] sh]# declare -i cc=$aa+$bb [[email protected] sh]# echo $cc 33

方法2:expr 或let 數值運算工具

[[email protected]t sh]# aa=11
[[email protected] sh]# bb=22
[[email protected] sh]# dd=$(expr $aa+$bb)
[[email protected] sh]# echo $dd
11+22
[[email protected] sh]# aa=11
[[email protected] sh]# bb=22
[[email protected] sh]# dd=$(expr $aa + $bb)
[[email protected] sh]# echo $dd
33

特別注意:注意“ + ”號左右的空格!!!

方法3:“$((運算式))” 或 “$[運算式]”

[[email protected] sh]# aa=11
[[email protected] sh]# bb=22
[[email protected] sh]# ff=$(($aa+$bb))
[[email protected] sh]# echo $ff
33
[[email protected] sh]# gg=$[$aa+$bb]
[[email protected] sh]# echo gg
gg
[[email protected] sh]# echo $gg
33
[[email protected] sh]# 

建議使用第三種,比較方便

3、運算子:

優先順序 運算子 說明
13 -,+ 單目負、單目正
12 !,~ 邏輯非、按位取反或補碼
11 *,/,%

乘、除、取模

10 +,- 加、減
9 << ,>>

按位左移、按位右移

8 <=  ,>= ,< ,> 小於或等於、大於或等於、小於、大於
7 == ,!= 等於、不等於
6 & 按位與
5 ^ 按位異或
4 | 按位或
3 && 邏輯與
2 || 邏輯或
1 =,+=,=,*=,/=,&=,^=,!=,<<=,>>= 賦值、運算且賦值
[[email protected] sh]# aa=$(((11+3)*3/2))
#雖然乘和除的優先順序高於加,但是通過小括號可以調整運算優先順序

[[email protected] sh]# echo $aa
21
[[email protected] sh]# bb=$(( 14%3))
#14不能被3整除,餘數是2
[[email protected] sh]# echo $bb
2
[[email protected] sh]# cc=$(( 1 && 0))
#邏輯與運算只有想與的兩邊都是1時結果才是1,否則與的結果是0
[[email protected] sh]# echo $cc
0

注意原則:先寫$() 括起來,內部是什麼和正常的數學運算都是一致的

二、變數測試與內容替換

變數置換方式 變數y沒有設定 變數y為空值 變數y設定值
x=${y-新值} x=新值 x為空 x=$y
x=${y:-新值} x=新值 x=新值 x=$y
x=${y+新值} x為空 x=新值 x=新值
x=${y:+新值} x為空 x為空 x=新值
x=${y=新值}

x=新值

y=新值

x為空

y值不變

x=$y

y值不變

x=${y:=新值}

x=新值

y=新值

x=新值

y=新值

x=$y

y值不變

x=${y?新值} 新值輸出到標準錯誤輸出(就是螢幕) x為空 x=$y
x=${y:?新值} 新值輸出到標準錯誤輸出(就是螢幕) 新值輸出到標準錯誤輸出(就是螢幕) x=$y

注:上述內容不用背,要作為手冊放到易查的位置,用到時查一下就好,但首先要能看懂表格含義。

示例一、測試x=${y-新值}

[[email protected] ~]# unset y

# 刪除變數y

[[email protected] ~]# x=${ y-new}

#進行測試

[[email protected] ~]# echo $x

new

#因為變數y不存在,所以x=new

[[email protected] ~]# y=""

[[email protected] ~]# x=${ y-new}

[[email protected] ~]#echo $x

如上,測試第一行

[[email protected] sh]# unset y   #表示不管是否有Y,用此句表示刪除y,保證確定不存在y變數
[[email protected] sh]# x=${y-new}  #new 可以是其他任意的變數
[[email protected] sh]# echo $x   #如果打印出來為new,則表示y變數不存在
new
[[email protected] sh]# y=""
[[email protected] sh]# x=${y-new}
[[email protected] sh]# echo $x

[[email protected] sh]# 
[[email protected] sh]# y=old
[[email protected] sh]# x=${y-new}
[[email protected] sh]# echo $x
old

變數測試,就是用來判斷某個變數是否存在,是否為空,等,用於shell程式設計中,

用於計算機系統自己判斷某個變數的狀態

例項二:第二行第一個判斷

[[email protected] sh]# y=""
[[email protected] sh]# x=${y:-new}
[[email protected] sh]# echo $x
new
[[email protected] sh]#