歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

簡單的Linux腳本程序

腳本的概念:

Bash程序不僅可以作為用戶管理Linux系統的命令操作環境,同時也可以作為一種優秀的腳本程序語言。凡是使用Shell編程的語言編寫的程序都可以稱為Shell腳本,通俗一點說,只要將一些Linux命令按順序保存到一個文本文件中,並給予這個文件可執行權限,那麼這個文件就可以稱為Shell腳本。當然,Shell腳本是為了完成一定的管理任務才創建的,因此腳本文件中的各條命令並不是雜亂無章隨便放置的,這就需要用戶來進行組織和設計了。

編寫Shell腳本文件 (建立包含可執行語句的文件文件)

使用文本編輯器程序(如:vi)創建腳本文件,文件名中可以使用擴展名(如:“.sh”),也可以不使用擴展名,並沒有強制的要求。腳本中可能包括的內容如下:

運行環境設置:通常位於文件的第一行,用戶指定使用那一個Shell程序進行解釋。設置時以“#!”開始,後面緊跟上指定的Shell程序的完成路徑,如“#!/bin/bash”。

注釋行:在腳本文件中,除了以“#!”開頭的Shell環境設置行以外,其他以“#”符號開頭的內容將被視為注釋信息,執行腳本時將予以忽略。編寫腳本程序時,添加必要的注釋語句是一個良好的習慣,這樣將大大增強腳本文件的易讀性,方便在不同時間,不同用戶間交流使用。

可執行語句:可執行語句是Shell腳本程序中最重要的組成部分,在命令行操作界面中可以執行的命令都可以寫入到腳本當中,程序運行時默認情況下將會按照順序依次解釋執行。除此以外,還可以添加一些程序結構語句,用戶靈活控制執行過程,提高程序執行效率。

eg:使用vi編輯器編寫一個簡單的Shell腳本文件test.sh,用於報告當前系統中“/boot”目錄所占用的空間大小,並列出其中的內核文件的屬性信息。

#!/bin/bash
#To show the size of /boot and the mode of kernel files.
echo "size of /boot:"
du -sh /boot
echo "the mode of kernel files:"
ls -lh /boot/vmlinuz-*

輸出:

www.linuxidc.com@virtual-machine:~$ bash test.sh
size of /boot:
26M /boot
the mode of kernel files:
-rw-r--r-- 1 root root 5.0M  2月 14  2013 /boot/vmlinuz-3.5.0-23-generic

執行Shell腳本有多種方式:

>:直接執行帶"x"權限的腳本文件

為腳本文件設置了可執行屬性後,在Shell命令行中可以直接通過腳本文件的路徑執行腳本程序,這也是最常用的一種方式,執行時需要在文件名之前加入“./”路徑,明確執行需要執行當前目錄下的腳本文件,這種方法也是出於對系統安全性的考慮。 

>:使用Shell解釋器程序執行腳本

這種方式可以將腳本文件作為指定Shell解釋器程序(如:bash、sh等)的參數,由解釋器程序負責讀取腳本文件中的內容並執行,因此並不需要腳本文件具有可執行屬性。此方法通常只在腳本的調試階段使用。

>:使用“.”命令執行腳本

使用Shell解釋器程序(如:bash)執行指定腳本文件時,是在當前Shell中啟動一個子Shell來運行腳本程序,因此腳本程序中定義的環境變量只能在子Shell環境中使用,而無法在用戶當前的Shell環境中使用。

使用Bash的內部命令“.”(或使用source命令,其作用相同)加載指定的腳本文件並執行時,系統將不會開啟新的Shell環境。使用這種方式時,腳本文件作為“.”命令的參數,因此同樣不要求腳本文件具備“x”權限。例如,在修改完“/etc/profile”文件以後,可以執行“. /etc/profile”命令,使得在文件中新設置的變量立即生效,而無需重新登錄。

相關閱讀

Linux腳本程序自動修改網卡配置文件中的MAC地址  http://www.linuxidc.com/Linux/2012-12/76332.htm

使用system()函數調用Linux腳本 http://www.linuxidc.com/Linux/2011-09/43258.htm

Linux腳本中的break continue exit return  http://www.linuxidc.com/Linux/2011-08/40385.htm

Linux腳本編程:Bash shell腳本的大括號 http://www.linuxidc.com/Linux/2011-04/34731.htm

Linux腳本Bash中的文本利器-sed  http://www.linuxidc.com/Linux/2011-02/31862.htm

Linux腳本Bash中的文本利器-awk  http://www.linuxidc.com/Linux/2011-02/31860.htm

Copyright © Linux教程網 All Rights Reserved