- 只要能夠操作應用程式的介面都能夠稱為殼程式。
- 狹義的殼程式指的是指令列方面的軟體,ex: bash 等。
- 廣義的殼程式則包括圖形介面的軟體!因為圖形介面其實也能夠操作各種應用程式來呼叫核心工作。
shell 依據發展者的不同有許多的版本:
- Bourne shell (sh)
- 第一個流行的 shell 是由 Steven Bourne 發展出來的,所以稱為 Bourne shell (sh)。
- C SHell (csh)
- 預設在 Sun 裡頭的
- 是由柏克萊大學的 Bill Joy 設計依附於 BSD 版的 Unix 系統中的 shell ,這個 shell 的語法有點類似 C 語言,所以才得名。
- 由於在學術界 Sun 主機勢力相當的龐大,而 Sun 主要是 BSD 的分支之一,所以 C shell 也是另一個很重要而且流傳很廣的 shell 之一 。
- Linux 使用的這一種版本就稱為『 Bourne Again SHell (簡稱 bash) 』
- Bourne Shell 的增強版本。
- 基準於 GNU 的架構下發展出來的。
- 另外還有商業上常用的 K SHell、TCSH 等等。
shell script (程式化腳本)
- 是利用 shell 的功能所寫的一個『程式 (program)』。
- 這個程式是使用純文字檔,將一些 shell 的語法與指令(含外部指令)寫在裡面, 搭配正規表示法、管線命令與資料流重導向等功能,以達到我們所想要的處理目的。
#!/bin/bash
- 在宣告這個 script 使用的 shell 名稱
- 其他還如:
- #!/bin/sh
- #!/bin/ksh
- #!/usr/bin/php
- 宣告這個檔案內的語法使用 bash 的語法!那麼當這個程式被執行時,他就能夠載入 bash 的相關環境設定檔 (一般來說就是 non-login shell 的 ~/.bashrc)
shell script 的預設變數 $0, $1, $2...
ex:
/path/to/scriptname opt1 opt2 opt3...
$0 $1 $2 $3
$# :代表後接的參數『個數』,以上表為例這裡顯示為『 4 』;
$@ :代表『 "$1" "$2" "$3" "$4" 』之意,每個變數是獨立的(用雙引號括起來);
$* :代表『 "$1c$2c$3c$4" 』,其中 c 為分隔字元,預設為空白鍵, 所以本例中代表『 "$1 $2 $3 $4" 』之意。
* Reference
- 第十三章、學習 Shell Scripts
沒有留言:
張貼留言