shell基礎知識【變量&賦值&運算篇】

 

【認識變量】

shell中變量的分類有以下四種:

變量類型 說明及例子
環境變量

不需定義,可全局調用;如#echo "$PATH"

環境變量設置:export 變量名=變量值

環境變量查詢:#env

位置參數變量

$n :n爲數字,$0代表命令本身,$1~$9代表從第一個到第九個參數,10以後的參數需要使用大括號{},${10}

$* :這個變量代表命令行中所有的參數,並把所有參數看成一個整體

$@:這個變量代表命令行中所有的參數,並把所有參數看成一個整體

$#:代表命令行中所有參數個數

預定義變量

$?:上一條命令的執行結果,默認成功返回0,不成功返回非0值

$$:腳本運行時,系統賦予的進程號

$!:後臺運行的最後一個進程的進程號

用戶自定義變量

用戶自定義,如aa="shuaige";意思是將字符串shuaige賦值給自定義變量aa;在系統中調用時需要在aa前加$;

 

 

 

 

 

 

 

 

 

變量的相關操作:

1、#set  >列出所有變量

2、#A=CentOS  >變量賦值

3、#B="$A server" >引用變量並賦值給新的變量

4、#A="a\tb\tc\nd\te";#echo -e $A  >添加-e選項解析特殊轉義符

A="a\tb\tc\nd\te"
echo "$A"

a       b       c
d       e

5、變量賦值的另一種方式:read

命令格式:read [選項] [變量名]

常用選項:

-p :提示信息,等待read輸入時,輸出提示信息

-t: 秒數,read命令默認會一直等待用戶輸入,使用此選項可以指定最長等待時間

-n:字符數;read命令只接受指定的字符數,就會執行後續操作

-s ;隱藏輸入的數據,適用於機密信息的輸入

 

【數值運算及處理】

數值運算方法:expr、(())、$[]、let、bc、awk、typeset

1、expr  >x=48;y=21;expr $x + 100 - $y \* 2 / 9  【注意:expr運算中符號前後有空格,且*需要轉義符】

expr $x + 100 - $y \* 2 / 9
144

2、((i=$j+$k))    等價於 i=`expr $j + $k`

((c=$x+$y))
echo "$c"
69

3、$[$x+$y]

aa=$[$x+$y]
echo "$aa"
69

4、let i=x+y

let i=x+y
echo "$i"
69

5、echo "x=48;y=21;$x+$y"|bc  【注意:bc是shell中進行浮點型運算的主要手段】

echo "x=48;y=21;$x+$y"|bc
69
echo "scale=4;x=48;y=21;$x/$y"|bc   #sacle=4;意思是指定保留運算結果四位小數
2.2857

6、awk

cat cj

tx 90 86 86

tx1 89 78 85

tx2 79 80 85   
awk '{print $1,$2+$3+$4,($2+$3+$4)/3}' cj

tx 262 87.3333

tx1 252 84

tx2 244 81.3333

7、typeset|declare

declare 與 typeset 命令是bash的內建命令,兩者是完全一樣的,用來聲明shell變量,設置變量的屬性。

typeset -i dd=($x+$y)
echo "$dd"
117

【與運算相關的變量】

echo "$RANDOM" >$RANDOM生成範圍是0-32767的隨機數,可使用取餘取得比此範圍小的隨機數;亦可以使用$RANDOM*$RANDOM取得更大的隨機數範圍。

 

【字符串處理】

在筆者之前的文章已經介紹過,shell最主要的操作就是字符串的獲取、替換、比較等處理操作,下面內容將介紹字符串的各種操作處理及對應的命令。

var1="CentOS7.0"    #先定義字符串

1、字符串截取操作

方法一:expr substr $var 1 6  >此命令的意思是取變量$var1的第一個到第六個字符

expr substr $var1 1 6
CentOS

方法二:cut

echo "$var1"|cut -d "t" -f2  ##以字符"t"分割字符串$var1,並在分割後取第二個字段
OS7.0

方法三:使用${變量:起始位置:截取長度}

echo ${var1::4}
Cent
echo ${var1:3:4}
tOS7

2、字符替換

var1="CentOS7.0"    #先定義字符串

方法一:${變量/old/new}

echo "${var1/Cen/reh}"   #將變量$var1中Cen字符串變爲reh,其餘不變
rehtOS7.0

方法二:tr命令

echo "$var1"|tr 'Cen' 'Reh'
RehtOS7.0

【注意:以上命令是字符串的簡單操作,對字符串處理的三大神器 grep、awk、sed暫不介紹,在後續的文章再一一揭曉】

【生成隨機字符串方式】

方法一:uuidgen

uuidgen
829ef52d-ed20-430a-8dd4-fb65612e7ac8

方法二:md5sum

md5sum校驗工具:根據輸入文本計算出256位(32位字符)的md5編碼值;輸入文本有任何差異,編碼結果都不一樣

echo $RANDOM |md5sum
d7fb19141a7a224a5b09df4c0de94a93  -

以上內容是shell的基礎知識,筆者總結並彙總出來,有不對的地方歡迎指正,希望對您有幫助。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章