Linux中shell scripts

來源:互聯網
上載者:User

標籤:

▲shell指令碼

shell script是利用shell的功能所寫的一個程式,這個程式是使用純文字檔案,將一些shell文法與指令寫在裡面,搭配Regex,管道命令與資料流重導向等功能,以達到我們所想要的處理目的。

shell script可以用來追蹤與管理系統的重要工作,簡單入侵偵測功能,建議的資料處理

?

在shell script中需要注意的事項

  1. 指令與參數間的多個空白會被忽略掉
  2. 空白行和tab也將被忽略掉
  3. 如果讀到一個Enter符號(CR),就嘗試開始執行該命令
  4. 如果一行的內容太多,可以使用\[Enter]來延伸至下一行
  5. 任何加在#後面的字,將全部視為批註文字而被忽略

?

如何執行.sh指令檔

  1. 將shell.sh加上可讀與執行許可權,以./shell.sh來執行
  2. 直接以sh shell.sh的方式來直接執行。sh是bash的軟串連。

?

sh [-nvx] scripts.sh

????參數-n????????不要執行script,僅查詢文法的問題

????參數-v????????在執行script前,先將script的內容輸出到螢幕上

????參數-x????????將使用到的script內容顯示到螢幕上

?

編寫指令碼時需要添加的代碼:

????功能,版本資訊,作者與聯絡方式,著作權聲明方式,記錄,較特殊的命令使用絕對路徑的方式來下達,聲明與設定指令碼運行時需要的環境變數

?

例如編寫一個列印hello world的指令碼,代碼如下:

#!/bin/bash

#Program:

# this scripts is used to print hello world

#History: 2015-1-26 youname first release

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin

export PATH

?

echo "hello world"

exit 0

?

▲test判斷

關於某個檔案名稱的判斷(存在與否)

????test –[bcedfpSL] filename

關於檔案的許可權偵測

????test –[rwxugks] filename

兩個檔案之間的比較

????test file1 –[nt,ot,ef] file2

????????-nt????newer than

????????-ot????older than

????????-ef????file1與file2是否為同一檔案,可用在hard link的判定上

兩個整數之間的判定

????test n1 –[eq,ne,gt,lt,ge,le] n2

????????-eq????equal

????????-ne????not equal

????????-gt????greater than

????????-lt????less than

????????-ge????greater than or equal

????????-le????less than or equal

判定字串的資料

????test –z string????????若string為空白(null),則為true

????test –n string????????若string非空,則為true

????test str1 = str2????????若相等,回傳true

????test str1 != str2????若不等,回傳true

多重條件判定

????參數-a(and,兩狀況同時成立)

????參數-o(or,任何一個成立)

????參數!(反相狀態)

?

判斷符號[]

????將判斷特徵和被判斷對象放入中括弧中,不需要test了

?

▲if判斷語句

????if [條件判斷式]; then????????fi結束

????if [條件判斷式]; then else????fi結束

????if [條件判斷式1];then elif[條件判斷式2];then else????fi結束

?

▲case…esac判斷

?

▲function功能

格式如下:

????function fname()

????{

????程式段

}

?

function的設定一定要在程式的最前面

擁有內建變數,$0表示函數名稱,後續接的變數標記為$1,$2…

?

▲迴圈控制

while迴圈:????當condition成立時,開始迴圈

while [condition]

do

????程式段落

done

?

until迴圈:????當condition成立時,終止迴圈

until [condition]

do

????程式段落

done

?

▲for迴圈

格式1:

for ((初始值;限制值;步長))

do

????程式段

done

?

格式2:

for var in con1 con2 con3…

do

????程式段

done

Linux中shell scripts

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.