Linux基礎之初識SHELL腳本

何爲SHELL腳本?

Shell腳本(Shell Script )可以簡單理解爲多個LINUX命令的堆砌,與Windows/Dos下的批處理相似,也就是用各類命令預先放入到一個文件中,方便一次性執行的一個程序文件,主要是方便管理員進行設置或者管理用的。但是它比Windows下的批處理更強大,比用其他編程程序編輯的程序效率更高,它使用了Linux/Unix下的命令。

爲什麼要用SHELL腳本?

shell script是利用shell的功能所寫的一個程序,這個程序是使用純文本文件,將一些shell的語法與指令寫在裏面,然後用正規表示法,管道命令以及數據流重導向等功能,以達到我們所想要的處理目的。就像早期dos年代的.bat,最簡單的功能就是將許多指令彙整寫一起,讓使用者很容易地就能夠一個操作執行多個命令,而shell script更是提供了數組,循環,條件以及邏輯判斷等重要功能,讓使用者可以直接以shell來寫程序,而不必使用類似C程序語言等傳統程序編寫的語法。

腳本可以是一個或者多個命令的集合,通過運行腳本,達到既定的功能或者效果。

創建Shell腳本

  一般shell腳本文件名通常以 .sh 結尾,內容通常包含以下部分:

  首行

    第一行內容在腳本的首行左側,表示腳本將要調用的shell解釋器:

    #!/bin/bash

    #!符號能夠被內核識別成是一個腳本的開始,這一行必須位於腳本的首行,/bin/bash是bash程序的絕對路徑,在這裏表示後續的內容將通過bash程序解釋執行。

  註釋

    註釋符號# 放在需註釋內容的前面

       註釋內容一般包括: 作者名稱、聯繫方式、創建日期、文件名稱、功能簡介等

  內容

              可執行命令和shell結構等

可以編寫一個包含腳本基本格式的腳本,這樣就不用在每次創建腳本文件時,手動輸入這些信息:

使用 vim 命令 編輯 ~/.vimrc 文件,添加以下內容:

下面編寫一個腳本,顯示當前系統版本、時間、登錄用戶信息、IP地址、內存使用、磁盤空間等一些信息:

執行腳本文件有多種方法

方法一:給腳本文件增加執行權限,然後給出絕對路徑運行腳本文件

方法二:在給腳本文件增加了執行權限後使用相對路徑 ./scripts_files.sh 方式執行腳本

 方法三:使用 bash scripts_files.sh 方式運行腳本

編寫一個腳本,統計出 /etc/passwd 文件中其默認 shell 爲非 /sbin/nologin 的用戶個數,並將用戶都顯示出來:

執行腳本查看結果:

向Shell腳本傳遞參數

在執行 Shell 腳本時,可以向腳本傳遞參數,腳本內獲取參數的格式爲:$n

n 代表一個數字,1 爲執行腳本的第一個參數,2 爲執行腳本的第二個參數,以此類推……

參數處理 說明
$# 傳遞到腳本的參數個數
$* 以一個單字符串顯示所有向腳本傳遞的參數。
如"$*"用「"」括起來的情況、以"$1 $2 … $n"的形式輸出所有參數。
$$ 腳本運行的當前進程ID號
$! 後臺運行的最後一個進程的ID號
$@ 與$*相同,但是使用時加引號,並在引號中返回每個參數。
如"$@"用「"」括起來的情況、以"$1" "$2" … "$n" 的形式輸出所有參數。
$- 顯示Shell使用的當前選項,與set命令功能相同。
$? 顯示最後命令的退出狀態。0表示沒有錯誤,其他任何值表明有錯誤。

編寫腳本 createuser.sh,實現如下功能:使用一個用戶名做爲參數,如果 指定參數的用戶存在,就顯示其存在,否則添加之,顯示添加的用戶的id號等信息:

執行腳本時發現提示權限不夠,即使賦予了用戶對腳本文件的執行權限,但是執行腳本的用戶權限不能夠使用腳本內的命令的話,也將無法執行:

這個例子裏的 /user/sbin/useradd 命令僅限於超級用戶可以執行:

編寫腳本 line_count.sh 傳遞2個文件給腳本,計算出2個文件中的非空白、純空白字符的行數,指出行數多的文件:

執行腳本,爲了方便比較,copy了2個文件到當前目錄:

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章