資源描述:
《Shell腳本設計7.1Shell腳本簡介以及編寫簡單腳本》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、第16講第7章Shell腳本設計7.1Shell腳本簡介以及編寫簡單腳本引言什么是Shell腳本?什么時候需要Shell腳本?如何編寫一個簡單的Shell腳本?【問題1的提出】Geecy軟件開發(fā)公司的開發(fā)人員Tom在調(diào)試程序的過程中遇到了一個令人煩惱的問題:在運行一個用C語言編寫的應用程序的時候,該程序需要讀取一個包含當前時間值的文本文件,該文件的格式必須為:第1行是“月-日-年”,第2行是“時:分”?!締栴}1的提出】(續(xù))date命令的默認顯示格式是:“星期月日時:分:秒時區(qū)年”因此,Tom每次運行程序前,都要手工修改該數(shù)據(jù)文件,即先運行date命令,再修
2、改數(shù)據(jù)文件,最后運行該應用程序。而且從運行date命令到運行該應用程序最長時間不應該超過1分鐘,否則就要重新修改數(shù)據(jù)文件。【問題1分析】有兩種傳統(tǒng)的方法可以完成對該數(shù)據(jù)文件的修改:(1)使用文本編輯器即先運行date命令,記錄下當前時間,然后用vi打開該數(shù)據(jù)文件,再修改數(shù)據(jù)文件并保存退出,最后立即運行該C寫的應用程序。如果從運行date命令到運行該應用程序最長時間超過1分鐘,則影響該程序的調(diào)試,導致整個過程必須重做?!締栴}1分析】有兩種傳統(tǒng)的方法可以完成對該數(shù)據(jù)文件的修改:(1)使用文本編輯器(2)使用組合命令使用管道和重定向的組合命令,效率大為提高,但是仍然
3、需要輸入兩個很長的命令,操作上依然不太方便。date
4、cut-f2,3,6-d“"
5、tr"""-">data.txtdate
6、cut-f4-d""
7、cut-f1,2-d":">>data.txt【問題1分析】(續(xù))這兩種方法都存在一些缺點,不夠理想。事實上,可以采用編寫Shell腳本的方式完成此任務。7.1.1認識Shell腳本用戶可以把若干個命令保存到一個文本文件,然后使用該文件的名字一次執(zhí)行所有的命令。這些命令將逐行執(zhí)行。這樣的文本文件稱為Shell腳本(ShellScript)。簡稱腳本。腳本是一組命令的集合。凡是能夠在shell提示符下直接執(zhí)行的命令,
8、都可以在腳本中使用。腳本中還可以使用一些不能在shell提示符下直接執(zhí)行的語句,這些語句只有在腳本中使用才有效。7.1.2編寫簡單腳本使用vi編輯一個新文件fist_script:vifirst_script輸入以下兩行內(nèi)容:ls-F/date保存文件并退出vi。7.1.3運行腳本在命令提示符下使用某個Shell執(zhí)行該腳本。例如:bashfirst_script這種方法指定了一個特定的shell版本,此處是bash,來執(zhí)行該腳本文件;指定的shell將首先讀入腳本文件first_script,然后逐行執(zhí)行腳本中的命令,并依次輸出結(jié)果。當腳本文件中的命令依次執(zhí)行
9、完畢,該臨時的子shell也自動結(jié)束運行,返回到用戶原來使用的shell狀態(tài)下。7.1.3運行腳本(續(xù))另一種運行方式更為常見,即在文件中的開始部分指定一個將要使用的shell,例如,首先修改腳本,在開頭增加一行:#!/bin/bash--其中#!必須是第一行的前兩個字符,后接具體shell的絕對路徑。然后修改腳本的FAP,增加文件擁有者的執(zhí)行權(quán)限:chmodu+xfirst_script最后,象使用系統(tǒng)命令一樣直接運行腳本:./first_script注意:無空格7.1.3運行腳本(續(xù))關(guān)于直接運行腳本:./first_script中的“./”;由于默認搜索
10、路徑PATH并不包含當前工作目錄,因此需要添加“./”指定當前需要運行的腳本切確的路徑是在當前目錄中。顯然,也可以使用絕對路徑方式來直接告訴系統(tǒng)當前需要運行的腳本的切確路徑。用戶可以從文件/etc/shell獲知系統(tǒng)中所有可用的shell以及其絕對路徑。7.1.4注釋腳本為了增加可讀性,用戶可以在腳本中以行為單位插入注釋(Comment)。所注釋的行使用字符“#”開頭,當Shell遇到“#”開頭的行將會忽略該行,即運行時,注釋并不會顯示出來?!締栴}1解決方案】1、首先用vi創(chuàng)建新文件update;2、輸入下面的內(nèi)容;3、為腳本update加上執(zhí)行權(quán)限:chmo
11、du+xupdate4、隨時可以通過執(zhí)行腳本update快速生成測試數(shù)據(jù)文件data.txt#!/bin/bash#Addaformattedstringofdatetodata.txtdate
12、cut-f2,3,6-d""
13、tr"""-">data.txt#Addaformattedstringoftimetodata.txtdate
14、cut-f4-d""
15、cut-f1,2-d":">>data.txt#Displaythecontentofdata.txtcatdata.txt