溫馨提示×

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

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

shell腳本總結(jié)

發(fā)布時(shí)間:2020-07-10 18:08:57 來(lái)源:網(wǎng)絡(luò) 閱讀:358 作者:pjq510cto 欄目:軟件技術(shù)

Shell語(yǔ)言的總結(jié) 

Shell變量

1.用戶自定義  :標(biāo)示符

              從右向左賦值

              引用變量  $

        清除變量 $unset?。?/span>

       例如 $count= 1

          $echo$HOME

2.命令行參數(shù)變量

 $0  與鍵入行的命令行一樣,包含腳本文件名

 $1  第一個(gè)參數(shù)

 $2

 $3

3.位置變量

$@ 包含所含命令行參數(shù) “$1 $2 $3 $4 $5 $6 $7$8¥9”

$* 所包含命令行的參數(shù) “$1 $2 $3 $4 $5 $6 $7$8¥9”

$?!“钚袇⒌膫€(gè)數(shù)

$? 包含前一個(gè)命令的退出狀態(tài)

$$ 包含正在執(zhí)行進(jìn)程的號(hào)

 

 

4.環(huán)境變量:env

$PATH ?。螅瑁澹欤斓乃阉髀窂?/span>

$HOME ?。澹簦悖穑幔螅螅鳎湮募辛谐龅挠脩裟夸?/span>

$IFS 默認(rèn)為空格 tab及換行符

$TERM 終端類型 常用的有vt100,ansi,vt200.xterm

 

Shell語(yǔ)句

1.說(shuō)明性語(yǔ)句  ?。#?/span>

2.功能性語(yǔ)句   ?。颍澹幔洌◤臉?biāo)準(zhǔn)輸入讀入一行)

          Expr(算術(shù)運(yùn)算命令)

         ?。裕澹螅簦ㄎ募傩浴∽址≌麛?shù))

.test   $name  -eq   $1

 echo  $?

if   test   -f   $filename

 then 

     ……

 Fi

if  [   -f  $filename  ]

 then 

     ……

 fi

.整數(shù)測(cè)試

a -eq b 測(cè)試是否相等

a -ne b測(cè)試是否不相等

a -gt b 測(cè)試是否大于b

a -ge b 測(cè)試是否大于等于b

a -lt b 測(cè)試是否小于b

a -le b 測(cè)試是否小于等于b

.文件測(cè)試

-d name     測(cè)試name 是否為一個(gè)目錄

-f name 測(cè)試name 是否為普通文件

-L name測(cè)試name 是否為符號(hào)鏈接

-r name 測(cè)試name 文件是否存在且為可讀

-w name 測(cè)試name 文件是否存在且為可寫(xiě)

-x name 測(cè)試name 文件是否存在且為可執(zhí)行

-s name 測(cè)試name 文件是否存在且其長(zhǎng)度不為0

f1 -nt f2 測(cè)試文件f1 是否比文件f2 更新

f1 -ot f2 測(cè)試文件f1 是否比文件f2 更舊

 

三.結(jié)構(gòu)性語(yǔ)句

1.?。桑妗∧J?/span>

    ?。裕瑁澹?/span>

   ?。妫?/span>

2.if 表達(dá)式

    Then

    命令表

  ?。牛欤螅?/span>

    命令表

  ?。疲?/span>

記住?。鏅z測(cè)是否為文件 ?。錂z測(cè)是否為目錄

4.分之語(yǔ)句

Case 字符串變量?。椋睿ǎ悖幔螅逯荒軝z測(cè)字符串變量)

常量字符串)      //變量名等于 常量字符串則執(zhí)行命令一

    命令表1

;;

 

常量字符串)

    命令表2;;

 

常量字符串)

    命令表3

;;

 

常量字符串)

    命令表4

;;

  ×)        //*表示其他模式

    命令5

;;

esac

 

 

5循環(huán)語(yǔ)句

A)for變量名?。椋睢∽兞苛斜?/span>

  ?。模?/span>

    命令表

Done

變量依次取單詞表中的各個(gè)單詞,  每取一次單詞就執(zhí)行一次循環(huán)體中的命令.  循環(huán)次數(shù)由單詞表中的單詞數(shù)確定命令表中的命令可以是一條也可以是由分號(hào)或換行符分開(kāi)的多條。如果單詞表是命令行上的所有位置參數(shù)時(shí)可以在for語(yǔ)句中省略 “in  單詞表” 部分。直到變量名把變量列表中的所有變量都取到了   循環(huán)體才會(huì)結(jié)束

 

 

6while 表達(dá)式

     Do

     命令表   ?。 ”磉_(dá)式為真    執(zhí)行命令表

Done

while語(yǔ)句首先測(cè)試其后的命令或表達(dá)式的值,如果為真,就執(zhí)行一次循環(huán)體中的命令,然后再測(cè)試該命令或表達(dá)式的值,執(zhí)行循環(huán)體,直到該命令或表達(dá)式為假時(shí)退出循環(huán)。

while語(yǔ)句的退出狀態(tài)為命令表中被執(zhí)行的最后一條命令的退出狀態(tài)。

 

7.until 表達(dá)式

?。模?/span>

    命令表    //表達(dá)式為假  直到表達(dá)式為真則 退出循環(huán)

Done

until循環(huán)與while循環(huán)的功能相似,  所不同的是只有當(dāng)測(cè)試的命令或表達(dá)式的值是假時(shí)才執(zhí)行循環(huán)體中的命令表否則退出循環(huán).  這一點(diǎn)與while命令正好相反

 

 

8break ?。幔睿洹 。悖铮睿簦椋睿酰?/span>

配合循環(huán)語(yǔ)句  混合使用

break  n  則跳出n;  

continue語(yǔ)句則馬上轉(zhuǎn)到最近一層循環(huán)語(yǔ)句的下一輪循環(huán)上,  

continue  n則轉(zhuǎn)到最近n層循環(huán)語(yǔ)句的下一輪循環(huán)上

 

 

 

 

 

 

Shell函數(shù)

 

shell 函數(shù)

 

1.函數(shù)定義方式

function_name()

{

命令列表//發(fā)揮空間

 

}

 

function function_name() //這種不常用

{

命令列表//發(fā)揮空間

 

}

2.函數(shù)的參數(shù)傳遞

 

function_name 12 $value ..

 

12:函數(shù)體內(nèi)引用12 ,用 $1 表示   

value:函數(shù)體內(nèi)引用 value ,用 $2 表示

 

 

3.函數(shù)返回值調(diào)用

 代表函數(shù)的返回狀態(tài) :$?

 

 1)有 return 的函數(shù) $? 表示 return 的值

 2)沒(méi)有 return 的函數(shù),$? 函數(shù)體內(nèi)最后一條指令的返回狀態(tài)

 

4.函數(shù)輸出內(nèi)容引用

通過(guò)反單撇號(hào)來(lái)引用函數(shù)輸出,一般為字符串

count=`function_name $value`

 

5.函數(shù)的返回值

Fun $value

Echo $?

 

 

Shell變量的作用域

1.局部變量   作用于函數(shù)體內(nèi)

    關(guān)鍵字?。欤铮悖幔?/span>

2.全局變量 作用于腳本內(nèi)部任何地

         初始化以后的該變量的內(nèi)容  否則為空

Count= 5

3.獨(dú)立于腳本文件外的

   關(guān)鍵字?。澹穑铮颍?/span>



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

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

AI