最近的項(xiàng)目中,有一個(gè)編寫linux shell腳本的任務(wù)。由于之前不是很熟悉,在這個(gè)過程中遇到了很多困難,查找了很多資料,也收獲了很多。下面宵云網(wǎng)絡(luò)就分享一下linux shell腳本中常用的知識(shí)總結(jié)。
1基礎(chǔ)語法
1.1變量
使用一個(gè)定義過的變量,只要在變量名前面加美元符號(hào)即可
your_name="qinjx"
echo $your_name
echo ${your_name}
1.2字符串
字符串可以用單引號(hào),也可以用雙引號(hào),也可以不用引號(hào)。
單引號(hào)
單引號(hào)里的任何字符都會(huì)原樣輸出,單引號(hào)字符串中的變量是無效的;
單引號(hào)字串中不能出現(xiàn)單引號(hào)(對(duì)單引號(hào)使用轉(zhuǎn)義符后也不行)。
雙引號(hào)
雙引號(hào)里可以有變量
雙引號(hào)里可以出現(xiàn)轉(zhuǎn)義字符
1.3傳遞參數(shù)
$# 表示執(zhí)行腳本傳入?yún)?shù)的個(gè)數(shù)
$* 表示以一個(gè)單字符串顯示所有向腳本傳遞的參數(shù)。
如"$*"用「"」括起來的情況、以"$1 $2 … $n"的形式輸出所有參數(shù)。
$$ 表示腳本運(yùn)行的當(dāng)前進(jìn)程ID號(hào)
$@ 與$*相同,但是使用時(shí)加引號(hào),并在引號(hào)中返回每個(gè)參數(shù)。
如"$@"用「"」括起來的情況、以"$1" "$2" … "$n" 的形式輸出所有參數(shù)。
$0 表示執(zhí)行腳本名稱
$1 表示第一個(gè)參數(shù)
$? 顯示最后命令的退出狀態(tài)。0表示沒有錯(cuò)誤,其他任何值表明有錯(cuò)誤。
1.4基本運(yùn)算符
原生bash不支持簡(jiǎn)單的數(shù)學(xué)運(yùn)算,但是可以通過其他命令來實(shí)現(xiàn),例如 awk 和 expr,expr 最常用。
expr 是一款表達(dá)式計(jì)算工具,使用它能完成表達(dá)式的求值操作。
val=expr 2 + 2
條件表達(dá)式要放在方括號(hào)之間,并且要有空格,例如: [$a==$b] 是錯(cuò)誤的,必須寫成 [ $a == $b ]。
乘號(hào)(*)前邊必須加反斜杠()才能實(shí)現(xiàn)乘法運(yùn)算;
if...then...fi 是條件語句,后續(xù)將會(huì)講解。
在 MAC 中 shell 的 expr 語法是:$((表達(dá)式)),此處表達(dá)式中的 "*" 不需要轉(zhuǎn)義符號(hào) "" 。
2常用命令
2.1printf 命令
printf 命令的語法:
printf format-string [arguments...]
printf "%-10s %-8s %-4s\n" 姓名 性別 體重kg
%s %c %d %f都是格式替代符
%-10s 指一個(gè)寬度為10個(gè)字符(-表示左對(duì)齊,沒有則表示右對(duì)齊),任何字符都會(huì)被顯示在10個(gè)字符寬的字符內(nèi),如果不足則自動(dòng)以空格填充,超過也會(huì)將內(nèi)容全部顯示出來。
%-4.2f 指格式化為小數(shù),其中.2指保留2位小數(shù)。
2.2test 命令
test 命令用于檢查某個(gè)條件是否成立,它可以進(jìn)行數(shù)值、字符和文件三個(gè)方面的測(cè)試。
文件表達(dá)式
-e filename 如果 filename存在,則為真
-d filename 如果 filename為目錄,則為真
-f filename 如果 filename為常規(guī)文件,則為真
-L filename 如果 filename為符號(hào)鏈接,則為真
-r filename 如果 filename可讀,則為真
-w filename 如果 filename可寫,則為真
-x filename 如果 filename可執(zhí)行,則為真
-s filename 如果文件長(zhǎng)度不為0,則為真
-h filename 如果文件是軟鏈接,則為真
filename1 -nt filename2 如果 filename1比 filename2新,則為真。
filename1 -ot filename2 如果 filename1比 filename2舊,則為真。
字符串變量表達(dá)式
If [ $a = $b ] 如果string1等于string2,則為真(字符串允許使用賦值號(hào)做等號(hào))
if [ $string1 != $string2 ] 如果string1不等于string2,則為真
if [ -n $string ] 如果string 非空(非0),返回0(true)
if [ -z $string ] 如果string 為空,則為真
if [ $sting ] 如果string 非空,返回0 (和-n類似)
2.3read命令
-n(不換行) -p(提示語句) -n(字符個(gè)數(shù)) -t(等待時(shí)間) -s(不回顯)
如:
read -p "Enter your name:" name
3壓縮與解壓縮
解壓:tar -zxvf FileName.tar
壓縮:tar -czvf FileName.tar DirName
3.1五個(gè)獨(dú)立命令
壓縮解壓都要用到其中一個(gè),可以和別的命令連用但只能用其中一個(gè)。
-c: 建立壓縮檔案
-x:解壓
-t:查看內(nèi)容
-r:向壓縮歸檔文件末尾追加文件
-u:更新原壓縮包中的文件
3.2 五個(gè)可選參數(shù)
根據(jù)需要在壓縮或解壓檔案時(shí)可選的。
-z:有g(shù)zip屬性的
-j:有bz2屬性的
-Z:有compress屬性的
-v:顯示所有過程
-O:將文件解開到標(biāo)準(zhǔn)輸出
3.3 一個(gè)必選參數(shù)
-f: 使用檔案名字,切記,這個(gè)參數(shù)是最后一個(gè)參數(shù),后面只能接檔案名
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。