【認識變量】
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的基礎知識,筆者總結並彙總出來,有不對的地方歡迎指正,希望對您有幫助。