日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Note For Linux By Jes(7)-学习 shell scripts

發布時間:2023/12/14 linux 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Note For Linux By Jes(7)-学习 shell scripts 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

簡單的shellscript 練習

script 的運行方式差異(source, sh script, ./script)

利用直接運行的方式來運行script



利用source 來運行腳本:在父程序中運行







善用判斷式:

利用test 命令的測試功能



測試的標志

代表意義

1. 關於某個檔名的『文件類型』判斷,如test -e filename 表示存在否

-e

該『檔名』是否存在?(常用)

-f

該『檔名』是否存在且為文件(file)(常用)

-d

該『檔名』是否存在且為目錄(directory)(常用)

-b

該『檔名』是否存在且為一個block device 裝置?

-c

該『檔名』是否存在且為一個character device 裝置?

-S

該『檔名』是否存在且為一個Socket 文件?

-p

該『檔名』是否存在且為一個FIFO (pipe) 文件?

-L

該『檔名』是否存在且為一個連結檔?

2. 關於文件的權限偵測,如test -r filename 表示可讀否(root 權限常有例外)

-r

偵測該檔名是否存在且具有『可讀』的權限?

-w

偵測該檔名是否存在且具有『可寫』的權限?

-x

偵測該檔名是否存在且具有『可運行』的權限?

-u

偵測該檔名是否存在且具有『SUID』的屬性?

-g

偵測該檔名是否存在且具有『SGID』的屬性?

-k

偵測該檔名是否存在且具有『Stickybit』的屬性?

-s

偵測該檔名是否存在且為『非空白文件』?

3. 兩個文件之間的比較,如:test file1 -nt file2

-nt

(newer than)判斷file1 是否比file2

-ot

(older than)判斷file1 是否比file2

-ef

判斷file1 file2 是否為同一文件,可用在判斷hard link 的判定上。主要意義在判定,兩個文件是否均指向同一個 inode哩!

4. 關於兩個整數之間的判定,例如test n1 -eq n2

-eq

兩數值相等(equal)

-ne

兩數值不等(not equal)

-gt

n1 大於n2 (greater than)

-lt

n1 小於n2 (less than)

-ge

n1 大於等於n2 (greater than or equal)

-le

n1 小於等於n2 (less than or equal)

5. 判定字串的數據

test -z string

判定字串是否為0 ?若string 為空字串,則為true

test -n string

判定字串是否非為0 ?若string 為空字串,則為false
注:-n 亦可省略

test str1 = str2

判定str1 是否等於str2 ,若相等,則回傳true

test str1 != str2

判定str1 是否不等於str2 ,若相等,則回傳false

6. 多重條件判定,例如:test -r filename -a -x filename

-a

(and)兩狀況同時成立!例如test -r file -a -x file,則file 同時具有r x 權限時,才回傳true

-o

(or)兩狀況任何一個成立!例如test -r file -o -x file,則file 具有r x 權限時,就可回傳true

!

反相狀態,如test ! -x file ,當file 不具有x 時,回傳true



利用判斷符號[ ]

Shell script 的默認變量($0,$1…)

/path/to/scriptname opt1 opt2 opt3 opt4 $0 $1 $2 $3 $4

$# :代表后接的參數『個數』,以上表為例這里顯示為『4 』;

  • $@ :代表『"$1""$2" "$3" "$4" 』之意,每個變量是獨立的(用雙引號括起來)

  • $* :代表『"$1c$2c$3c$4"』,其中c為分隔字節,默認為空白鍵,所以本例中代表『 "$1$2 $3 $4" 』之意。

shift:造成參數變量號碼偏移







條件判斷式:

利用if .... then

利用 case ..... esac 判斷 利用 function 功能:function 也是擁有內建變量的~他的內建變量與 shell script 很類似, 函數名稱代表示 $0 ,而后續接的變量也是以 $1, $2... 來取代的回圈 (loop) while do done, until do done (不定回圈)

for...do...done (固定回圈)

for...do...done 的數值處理:

for (( 初始值; 限制值; 運行步階 )) do程序段 done



shellscript 的追蹤與debug

sh -x


總結

以上是生活随笔為你收集整理的Note For Linux By Jes(7)-学习 shell scripts的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。