寫文章之前我想大家必須知道什麼是shell編程以及shell編程和C/C++編程的區別是什嗎?
本人的認識是shell編程就是運用linux的操作命令按照一定的文法進行編程
與C/C++的區別在於,shell編程具有一定的平台相關性,也就是說某些命令在這個Linux作業系統可以用,但是在另外一個linux下就不一定可以用了,而C/C++編程卻可以達到平台無關性。
如果你不介意已耗用時間,大可以採用shell編程,因為簡單。如果考慮到平台無關性,則要考慮通用的shell命令或者C/C++編程。
1、Shell指令碼介紹
1.1 使用shell指令碼的原因
shell指令碼在處理自動迴圈或大的任務方面可節省大量的時間,且功能強大。如果你有處理一個任務的命令清單,不得不一個一個敲進去,然後觀察輸出結果,再決定它是否正確,如果正確,再繼續下一個任務,否則再回到清單一步步觀察。一個任務可能是將檔案分類、向檔案插入文本、遷移檔案、從檔案中刪除行、清除系統到期檔案、以及系統一般的管理維護工作等等。建立一個指令碼,在使用一系列系統命令的同時,可以使用變數、條件、算術和迴圈快速建立指令碼以完成相應工作。這比在命令列下一個個敲入要節省大量的工作時間。shell指令碼可以在行命令中接收資訊,並使用它作為另一個命令的輸入。對於不同的UNIX和LINUX,使用一段shell指令碼將需要一些小小的改動才能運行通過。實際上shell的可遷移性不成問題,但是系統間命令的可遷移性存在差別。
1.2 指令碼內容
指令碼不是複雜的程式,它是按行解釋的。程式必須以下面的行開始(必須放在檔案的第一行):
#!/bin/sh
符號#!用來告訴系統它後面的參數是用來執行該檔案的程式。
任何指令碼都可能有注釋,加註釋需要此行的第一個字元為#,解譯器對此行不予解釋。在第二行注釋中寫入指令碼名是一個好習慣。指令碼從上到下執行,運行指令碼前需要增加其執行許可權。確保正確建立指令碼路徑,這樣只用檔案名稱就可以運行它了。
1.3 運行一段指令碼
$ vim cleanup
#!/bin/sh
#name:cleanup
# this is a general cleanup script
echo "starting cleanup...wait"
rm /usr/local/apps/log/*.log
tail -40 /var/adm/messages>/tmp/messages
rm /var.adm/messages
mv /tmp/messages /var/adm/messages
echo "finished cleanup"
上述指令碼通過將目錄下檔案名稱截斷,清除/usr/adm/下資訊,並刪除/usr/local/apps/log下所有註冊資訊。
可以使用c h m o d命令增加指令碼執行許可權。
$chmod u+x cleanup
現在運行指令碼,只要敲入檔案名稱即可:$ cleanup
sh:cleanup:command not found
在試:$ ./cleanup