溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Bash shell腳本的語法結(jié)構(gòu)

發(fā)布時間:2020-07-28 03:41:31 來源:網(wǎng)絡(luò) 閱讀:252 作者:chbo_yang 欄目:開發(fā)技術(shù)

  目的:自我整理,自我回顧,自我反省!

  內(nèi)容:干貨!干貨?。「韶洠。。?/p>

  附加:不足之處希望大家指正,能給像我一樣的菜鳥一點啟發(fā)就最好啦。僅僅是啟發(fā)。。。

  感謝:感謝老男孩(老看您的博文和視頻,O(∩_∩)O哈哈~),當(dāng)然還有網(wǎng)上的各路技術(shù)大牛,參考書籍《UNIX shell》

Bash shell 腳本結(jié)構(gòu)

#/bin/sh

shbang行,腳本解釋器。

如:#/bin/csh,#/bin/awk...等

#

注釋。

如:This doc is writed chbo.

shell元字符或通配符

*,'',"",?,[],|,>,>>等

如:rm ./*

顯示輸出echo "Hello,Chbo."
局部變量

var=value

var='value'

var="value1 value2"

---命令結(jié)果賦值給變量---

var=`cmd`

var=$(cmd)

環(huán)境變量

---臨時生效---

export var=value    

var=value ;export var

---永久生效---

寫入:/root/.bash_profile  /root/.bashrc

常寫入:/etc/profile

腳本目錄:/etc/profile.d

查看變量

echo $var_name

echo $PATH


特殊變量

$0 :打印自身

$n :${10}

$? :echo $? 判斷命令執(zhí)行結(jié)果

$# :傳參個數(shù)

如:

[root@chboa 02]# cat 4.sh 

[ $# -ne 2 ] && {

echo "must two"

exit 1

}

echo haha

傳參

---交互式---

[root@chbo ]# read -t 5 -p "pls input:" a 

pls input:33

[root@chbo ]# echo $a

33

---非交互式---

var1=$1

var2=$2

算術(shù)運算

1、((n=1+2))

2、n=`expr 5 + 9`

3、let n=1+2

4、n=`echo 3+3|bc`

5、n=$[2+3]

條件測試

方式一:test

方式二:[]

方式三:[[]]

---數(shù)值比較--------------------------------

-eq -ge -gt -le -lt -ne

如:[$1 -eq $2]

---字符串比較------------------------------

= !=

-n str1 檢查str1的長度是否非0

-z str1 檢查str1的長度是否為0

如:

[ "$str1" = "$str2" ]

[ -n "$str1" ]--->檢查一個變量是否含有數(shù)據(jù)

注意:

1、加 “ ”

2、=兩邊必須有空格

---文件比較--------------------------------

-e

-d -f -r -w -x(excute) -s(size)

-nt (new than) 

-O 檢查文件是否存在并屬于當(dāng)前用戶所有

-G 檢查文件是否存在默認(rèn)組與當(dāng)前用戶相同

例如:

[ -s $file ] 檢查文件是否存在并非空

[ $file1 -nt $file2 ] 檢查file1比file2新


條件語句

if [ -f $file ]

then

 echo 0

else

 echo 1

fi                

<===>

[ -f $file ]&&echo 0||echo 1

-------------------------------------------

if [  ]

then

 statements

elif

then

 statements

elif

then

 statements

else

 statements

if

-------------------------------------------

case var_name in

pattern1)

 statements

;;

pattern2)

 statements

;;

pattern3)

 statements

;;

*)

 default value

;;

esac


循環(huán)語句

for n in `seq 10`

do

echo 10.0.0.$n

done

---------------------------

while [  ]

do 

 commands

done

----------------------------

until [  ]

do

 commands

done

函數(shù)

function name(){

指令

return n

}

執(zhí)行:

  1. 先定義函數(shù),才能調(diào)用

  2. 調(diào)用函數(shù),直接寫函數(shù)名

腳本的執(zhí)行
  1. sh script_name

  2. chmod +x path/script_name;path/script_name

  3. source script_name或. script_name

    (當(dāng)前shell可調(diào)用腳本里的內(nèi)容)






向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI