Linux Shell程式設計(2)——第一個shell程式

尹成發表於2014-09-30
在最簡單的情況下,指令碼程式不過是儲存在一個檔案裡的系統命令列表。這至少讓你執行它 時不必重新按順序鍵入相同功能的命令序列。


一個清空/var/log目錄下的日誌檔案的指令碼

# Cleanup
# 必須以root使用者執行.
 
cd /var/log
cat /dev/null > messages
cat /dev/null > wtmp
echo "Logs cleaned up."


這沒有什麼不同尋常的,它不過是一組可以容易地從控制檯或xterm(譯者注:一種圖形虛擬控制檯). )中順序鍵入的命令集。用一種指令碼代替這組命令的用處是使你不必每次執行相同任務時都重複地順序鍵入它們。指令碼變成了一個工具, 並且它也很容易地在一個實際專案被修改或者定製。


一個改進版的cleanup指令碼
#!/bin/bash
# Bash指令碼正確的頭部.

# Cleanup, 版本 2
# 需要以root執行.
# 如果不是root使用者,在此處新增錯誤資訊列印程式碼和退出程式碼.

LOG_DIR=/var/log
# 使用變數比使用硬編碼(hard-coded)更好。
cd $LOG_DIR

cat /dev/null > messages
cat /dev/null > wtmp

echo "Logs cleaned up."

exit # 這是從一個指令碼中退出正確合適的方法


在指令碼開頭的 sha-bang ( #!) 是告訴系統這個檔案是由特定命令直譯器解釋的一組命令。 那個 #! 實際上是兩個位元組的魔數, 魔數是指定檔案型別的特殊記號,在此是表示這是一個可執行的shell指令碼(鍵入 man magic可瞭解更多的資訊)。緊跟著#!的是一個路徑名.這個路徑名是解釋這個指令碼內命令的命令直譯器程式的路徑:可能是一個shell,也可能是一個程式語言或者是一個軟體包程式。這個命令直譯器能執行指令碼內的命令語句。它從指令碼開頭(即從#!所在行的下一行)起執行,但是忽略註釋行。
  

相關文章