iOS 從今天開始學習寫 shell 指令碼
聯絡人:石虎 QQ:1224614774 暱稱: 嗡嘛呢叭咪哄
QQ群:807236138 群稱: iOS 技術交流學習群
一、概念
Shell 簡介
在電腦科學中,殼層(英語:shell)指“為使用者提供使用者介面”的軟體,通常指的是命令列介面的解析器。一般來說,這個詞是指作業系統中,提供訪問核心所提供之服務的程式。shell也用於泛指所有為使用者提供操作介面的程式,也就是程式和使用者互動的介面。因此與之相對的是程式核心(英語:kernel),核心不提供和使用者的互動功能。
不過這個詞也拿來指應用軟體,或是任何在特定元件外圍的軟體,例如瀏覽器或電子郵件軟體是HTML排版引擎的shell。shell這個詞是來自於作業系統(核心)與使用者介面的外層介面。
通常將shell分為兩類:命令列與圖形介面。命令列殼層提供一個命令列介面(CLI);而圖形殼層提供一個圖形使用者介面(GUI)。 –引自維基百科。
二、Shell 指令碼
Shell 指令碼(shell script),是一種為 shell 編寫的指令碼程式。
業內所說的 shell 通常是shell 指令碼,但朋友們要知道,shell 和 shell script 是兩個不同的概念。
由於習慣的原因,簡潔起見,本文出現的 “shell程式設計” 都是指 shell 指令碼程式設計,不是指開發 shell 自身。
三、Shell 指令碼編寫環境
Shell 程式設計跟 java、php 程式設計一樣,只要有一個能編寫程式碼的文字編輯器和一個能解釋執行的指令碼直譯器就可以了。
Shell 指令碼種類眾多,常見的有:
- Bourne Shell(/usr/bin/sh或/bin/sh)
- Bourne Again Shell(/bin/bash)
- C Shell(/usr/bin/csh)
- K Shell(/usr/bin/ksh)
- Shell for Root(/sbin/sh)
- ……
各主要作業系統下預設的shell:
- AIX下是Korn Shell
- Solaris預設的是Bourne shell
- FreeBSD預設的是C shell
- HP-UX預設的是POSIX shell
- Linux是Bourne Again shell
- ……
本教程關注的是 Bash,也就是 Bourne Again Shell,由於易用和免費,Bash 在日常工作中被廣泛使用。同時,Bash 也是大多數Linux 和 OS X 系統預設的 Shell。
在一般情況下,人們並不區分 Bourne Shell 和 Bourne Again Shell,所以,像 #!/bin/sh,它同樣也可以改為 #!/bin/bash。
/#! 告訴系統其後路徑所指定的程式即是解釋此指令碼檔案的 Shell 程式。
四、第一個shell 指令碼
在linux/unix 環境下 或 cygwin 環境 使用 編寫第一個 shell 指令碼 hello world,並且執行。
示例:
#!/bin/bash
#!/bin/bash echo "Hello World !"
第一行 ’ #! ’ 是一個約定的標記,它告訴系統這個指令碼需要什麼直譯器來執行,即使用哪一種 Shell。
echo 命令用於向視窗輸出文字。
五、執行shell 指令碼有兩種方法
1、作為可執行程式
將上面的程式碼儲存為 test.sh,並 cd 到相應目錄:
chmod +x ./test.sh #使指令碼具有執行許可權
./test.sh #執行指令碼
注意,一定要寫成 ./test.sh,而不是 test.sh,執行其它二進位制的程式也一樣,直接寫 test.sh,linux 系統會去 PATH 裡尋找有沒有叫 test.sh 的,而只有 /bin, /sbin, /usr/bin,/usr/sbin 等在 PATH 裡,你的當前目錄通常不在 PATH 裡,所以寫成 test.sh 是會找不到命令的,要用 ./test.sh 告訴系統說,就在當前目錄找。
2、作為直譯器引數
這種執行方式是,直接執行直譯器,其引數就是 shell 指令碼的檔名,如:
/bin/sh test.sh
這種方式執行的指令碼,不需要在第一行指定直譯器資訊,寫了也沒用。