Linux 中的 shell 腳本

在 Linux 中,有時候需要對多條命令進行組合才能完成一項任務,或者多個對象要使用同樣一組命令,我們都希望採用一種便捷化的方式來執行,而不必在 shell 中一行一行地輸入命令,此時就需要到 shell 腳本。

什麼是 shell 腳本

與編程語言的源文件一樣,shell 腳本只是將符合 shell 的語法和命令進行搭配,以達到處理某一項任務的目的。

此時可以將 shell 腳本看作是一種特殊編程語言的源文件,能夠在 shell 中執行。

爲什麼要了解 shell 腳本

其實是有需要看懂 shell 腳本的需要,剛打開 .sh 文件的時候,真的是不能夠特別理解。因此纔想要了解一下,但其實利用 shell 腳本能夠做到的事情有很多:

  • 自動化管理
  • 系統跟蹤和管理
  • 入侵檢測
  • 數據處理
  • 組合命令
  • 跨平臺支持

其實 shell 腳本完全可以當作是一種編程語言來認識,只是 shell 腳本多用於系統管理上。因爲 shell 腳本其實就是一個一個的命令,命令在逐行執行中,會佔用系統資源,因此 shell 腳本在大規模數值運算上的性能就顯得有點弱了。

shell 腳本的規則

一般情況下,shell 腳本和其它編程語言是類似的,都有一定的規則:

  • 命令自上而下,自左向右執行
  • 忽略多餘的空格,tab 也被視爲空格
  • 忽略空白行
  • 讀取到換行符,就開始執行本行命令
  • 命令過長可以用轉義字符進行擴展
  • 可以添加註釋,符號爲 #

之前提到過,Linux 中命令的執行順序爲:

  1. 以相對路徑或者絕對路徑執行命令,如之前提到的 /bin/ls
  2. 由命令別名找到對應命令並執行
  3. 由 bash 內置命令來執行
  4. 通過 ${PATH} 變量順序查找並執行

這也就是說我們可以使用多種方法運行構建的 shell 腳本。

  • 相對路徑/絕對路徑
  • 命令別名
  • bash shname/sh shname
  • 將 shell 腳本路徑添加到 ${PATH} 中

編程習慣

這個編程習慣說的就不單單是 shell 腳本的編程習慣了,而是所有的編程語言最好都有的一種書寫習慣。

在編程的源文件中最好有:

  • 功能描述
  • 版本信息
  • 作者和聯繫方式
  • 版權聲明
  • History
  • 特殊命令使用絕對路徑
  • 實現聲明環境
  • 對實現某一功能的代碼塊添加註釋
  • 良好的書寫格式

當然有時候自己寫的腳本不需要包含這麼多的條目,但是爲了程序的可讀性,儘量要包含功能描述,書寫格式和代碼註釋。

Hello world

這裏我們編寫名爲 exp.sh 的 shell 腳本實現 “Hello world”:

# Description: using shell script to implement Hello world.
# Version: 1.0
# Author: wood
# Address: None
# Copyright: None
# History: None

PATH=${PATH}
export PATH
echo -e "Hello world"
exit 0

 然後實現調用:

wood@ubuntu:/tmp/test$ ll
total 12
drwxrwxr-x  2 wood wood 4096 Apr  7 10:43 ./
drwxrwxrwt 14 root root 4096 Apr  7 10:45 ../
-rw-rw-r--  1 wood wood  199 Apr  7 10:43 exp.sh
wood@ubuntu:/tmp/test$ chmod +100 exp.sh 
wood@ubuntu:/tmp/test$ ll
total 12
drwxrwxr-x  2 wood wood 4096 Apr  7 10:43 ./
drwxrwxrwt 14 root root 4096 Apr  7 10:45 ../
-rwxrw-r--  1 wood wood  199 Apr  7 10:43 exp.sh*
wood@ubuntu:/tmp/test$ ./exp.sh 
Hello world
wood@ubuntu:/tmp/test$ bash exp.sh 
Hello world
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章