bat脚本交互输入_Shell脚本的应用(一)
會(huì)不會(huì)有那么一天,生活可以簡(jiǎn)單到每天清早踏上一輛載著鮮花的腳踏車,微笑著穿過(guò)窄窄的街巷,為愛(ài)花的人送去芬芳,為需要知識(shí)的你送去幫助。
簡(jiǎn)介
????????隨著Linux系統(tǒng)在企業(yè)中的應(yīng)用越來(lái)越多,服務(wù)器的自動(dòng)化管理也變得越來(lái)越重要。在Linux服務(wù)器的自動(dòng)化維護(hù)工作中,除了計(jì)劃任務(wù)的設(shè)置以外,Shell腳本的應(yīng)用也是非常重要的一部分。
????????本章將主要學(xué)習(xí)Shell腳本基礎(chǔ),變量使用等知識(shí),要求學(xué)會(huì)編寫簡(jiǎn)單的腳本。
本章重點(diǎn)
Shell變量的應(yīng)用
Shel腳本的編寫和執(zhí)行
????????????????????????????????????????????理論講解
一,Shell腳本基礎(chǔ)
????????在一些復(fù)雜的Linux維護(hù)工作中,大量重復(fù)性的輸入和交互操作不僅費(fèi)時(shí)費(fèi)力,而且容易出錯(cuò)。
????????而編寫一個(gè)恰到好處的Shell腳本程序,可以批量處理,自動(dòng)化地完成一系列維護(hù)任務(wù),大大減輕管理員的負(fù)擔(dān)。
1.編制第一個(gè)Shell腳本
??????? Linux系統(tǒng)中的Shell腳本是一個(gè)特殊的應(yīng)用程序,它介于操作系統(tǒng)內(nèi)核與用戶之間,充當(dāng)了一個(gè)“命令解釋器”的角色,負(fù)責(zé)接收用戶輸入的操作指令(命令)并進(jìn)行解釋,將需要執(zhí)行的操作傳遞給內(nèi)核執(zhí)行,并輸出執(zhí)行結(jié)果。
常見的Shell 解釋器程序有很多種,使用不同的Shell 腳本時(shí),其內(nèi)部指令、命令行提示等方面會(huì)存在一些區(qū)別.通過(guò)/etc/shells文件可以了解當(dāng)前系統(tǒng)所支持的Shell腳本種類。
????????其中,/bin/bash是目前大多數(shù)Linux版本采用的默認(rèn)Shell腳本.Bash的全稱為Bourne Again Shell.是受歡迎的開源軟件項(xiàng)目之一。本課程中講述的所有Shell操作均以Bash為例。
????????那么,什么是“Shell腳本”呢?簡(jiǎn)單地說(shuō),只要將平時(shí)使用的各種Linux命令按順序保存到一個(gè)文本文件中,然后添加可執(zhí)行權(quán)限,這個(gè)文件就成為一個(gè)Shell腳本了。例如,執(zhí)行以下操作可以創(chuàng)建第一個(gè)腳本文件:helloShell.sh。
????????當(dāng)然,一個(gè)合格的Shell腳本程序應(yīng)該遵循標(biāo)準(zhǔn)的腳本結(jié)構(gòu),而且能夠輸出友好的提示信息,更加容易讀懂.對(duì)于代碼較多,結(jié)構(gòu)復(fù)雜的腳本,應(yīng)添加必要的注釋文字,標(biāo)準(zhǔn)化的helloShell.sh腳本內(nèi)容如下所示。
helloShell.sh腳本內(nèi)容
執(zhí)行helloShell.sh腳本內(nèi)容
????????上述helloShell.sh腳本文件中,包括三條命令:cd/etc/、pwd、Is。執(zhí)行此腳本文件后。
????????輸出結(jié)果與依次單獨(dú)執(zhí)行這三條命令是相同的,從而實(shí)現(xiàn)了“批量處理”的自動(dòng)化過(guò)程。
上述helloShell.sh腳本文件中
????????第一行#!/bin/bash 是一行特殊的腳本聲明,表示此行以后的語(yǔ)句通過(guò)/bin/bash程序來(lái)解釋執(zhí)行;
????????第二行#大多用來(lái)解釋當(dāng)前腳本的作用以及功能
????????第三行#寫編寫腳本工程師的聯(lián)系方式,方便腳本故障后聯(lián)系該工程師
????????echo命令用于輸出字符串,以使腳本的輸出信息更容易讀懂.
????1)執(zhí)行腳本的方法
????????????sh helloShell.sh:?不需要添加執(zhí)行權(quán)限來(lái)執(zhí)行腳本,可以直接執(zhí)行腳本,相當(dāng)于/bin/sh來(lái)解釋腳本。
????????????source helloShell.sh: 和/bin/sh一樣,不需要添加執(zhí)行權(quán)限,但是source和/bin/sh的區(qū)別是執(zhí)行完指定腳本會(huì)進(jìn)入該腳本的變量目錄
????????????? ?./helloShell.sh:需要添加執(zhí)行權(quán)限來(lái)解釋腳本
??????? Linux系統(tǒng)中包括大量的Shell腳本文件,在學(xué)習(xí)Shell腳本的過(guò)程中可用來(lái)作為參考,但應(yīng)盡量避免直接修改系統(tǒng)內(nèi)的Shell腳本文件,以免導(dǎo)致服務(wù)或系統(tǒng)故障。
二,重定向與管道操作
????????由于Shell 腳本“批量處理”的特殊性,其大部分操作過(guò)程以靜默方式運(yùn)行,不需要用戶進(jìn)行干預(yù)。因此學(xué)會(huì)提取、過(guò)濾執(zhí)行信息變得十分重要。本小節(jié)主要介紹Shell環(huán)境中的兩個(gè)I/O操作:重定向、管道。
1.重定向操作
??????? Linux系統(tǒng)使用文件來(lái)描述各種硬件,設(shè)備等資源,如以前學(xué)過(guò)的硬盤和分區(qū),光盤等設(shè)備文件。
用戶通過(guò)操作系統(tǒng)處理信息的過(guò)程中,包括以下幾類交互設(shè)備文件。
標(biāo)準(zhǔn)輸入(STDN):默認(rèn)的設(shè)備是鍵盤,文件編號(hào)為0,命令將從標(biāo)準(zhǔn)輸入文件中讀取在執(zhí)行過(guò)程中需要的輸入數(shù)據(jù)。用“
標(biāo)準(zhǔn)輸出(STDOUT):默認(rèn)的設(shè)備是顯示器,文件編號(hào)為1.命令將執(zhí)行后的輸出結(jié)果發(fā)送到標(biāo)準(zhǔn)輸出文件。用“>”表示。
標(biāo)準(zhǔn)錯(cuò)誤(STDERR):默認(rèn)的設(shè)備是顯示器,文件編號(hào)為2,命令將執(zhí)行期間的各種錯(cuò)誤信息發(fā)送到標(biāo)準(zhǔn)錯(cuò)誤文件。用“2>”表示。
????????標(biāo)準(zhǔn)輸入、標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯(cuò)誤默認(rèn)使用鍵盤和顯示器作為關(guān)聯(lián)的設(shè)備,與操作系統(tǒng)進(jìn)行交互,完成最基本的輸入、輸出操作,即從鍵盤接收用戶輸入的各種命令字串、輔助控制信息,并將命令結(jié)果輸出到屏幕上;如果命令執(zhí)行出錯(cuò),也會(huì)將錯(cuò)誤信息反饋到屏幕上。
????????在實(shí)際的Linux系統(tǒng)維護(hù)中,可以改變輸入、輸出內(nèi)容的方向,而不使用默認(rèn)的標(biāo)準(zhǔn)輸入、輸出設(shè)備(鍵盤和顯示器),這種操作稱為重定向。
1)重定向輸出
????????重定向輸出指的是將命令的正常輸出結(jié)果保存到指定的文件中,而不是直接顯示在顯示器的屏幕上。重定向輸出使用“>”或“>>”操作符號(hào),分別用于覆蓋或追加文件。
????????若重定向輸出的目標(biāo)文件不存在,則會(huì)新建該文件,然后將前面命令的輸出結(jié)果保存到該文件中;若目標(biāo)文件已經(jīng)存在,則將輸出結(jié)果覆蓋或追加到文件中。例如,若要將當(dāng)前主機(jī)的CPU類型信息(uname-p)保存到1.txt文件中,而不是直接顯示在屏幕上,可以執(zhí)行以下操作。
????????當(dāng)需要保留目標(biāo)文件原有的內(nèi)容時(shí),應(yīng)改用‘‘>>”操作符號(hào),以便追加內(nèi)容而不是全部覆蓋。
例如,執(zhí)行以下操作可以將內(nèi)核版本信息追加到kernel.txt文件中。
2)重定向輸入
????????重定向輸入指的是將命令中接收輸入的途徑由默認(rèn)的鍵盤改為指定的文件,而不是等待從鍵盤輸入。重定向輸入使用
????????通過(guò)重定向輸入可以使一些交互式操作過(guò)程能夠通過(guò)讀取文件來(lái)完成。例如,使用passwd命令為用戶設(shè)置密碼時(shí),每次都必須根據(jù)提示輸入兩次密碼字串,非常煩瑣,若改用重定向輸入將可以省略交互式的過(guò)程,而自動(dòng)完成密碼設(shè)置(結(jié)合passwd命令的--stdin’選項(xiàng)來(lái)識(shí)別標(biāo)準(zhǔn)輸入)。
????????沒(méi)有交互式的操作語(yǔ)句更方便在Shell腳本程序中使用,可以大大減少程序被打斷的過(guò)程,提高腳本執(zhí)行的效率。
3)錯(cuò)誤重定向
????????錯(cuò)誤重定向指的是將執(zhí)行命令過(guò)程中出現(xiàn)的錯(cuò)誤信息(如選項(xiàng)或參數(shù)錯(cuò)誤等)保存到指定的文件,而不是直接顯示在屏幕上。錯(cuò)誤重定向使用“2>操作符,其中“2是指錯(cuò)誤文件的編號(hào)(在使用標(biāo)準(zhǔn)輸出.標(biāo)準(zhǔn)輸入重定向時(shí),實(shí)際上省略了1.0編號(hào))。
????????在實(shí)際應(yīng)用中,錯(cuò)誤重定向可用來(lái)收集程序執(zhí)行的錯(cuò)誤信息,為排錯(cuò)提供依據(jù),對(duì)于Shell腳本,還可以將無(wú)關(guān)緊要的錯(cuò)誤信息重定向到空文件/dev/null中,以保持腳本輸出的簡(jiǎn)潔。例如,執(zhí)行以下操作可以將使用tar命令進(jìn)行備份時(shí)出現(xiàn)的錯(cuò)誤信息保存到error.log文件中。
????????使用“2>操作符時(shí),會(huì)像使用>操作符一樣覆蓋目標(biāo)文件的內(nèi)容,若要追加內(nèi)容而不是覆蓋文件,則應(yīng)改用“2>>操作符。
????????當(dāng)命令輸出的結(jié)果可能既包括標(biāo)準(zhǔn)輸出(正常執(zhí)行)信息,又包括錯(cuò)誤輸出信息時(shí),可以使用操作符“>”“2>”將兩類輸出信息分別保存到不同的文件,也可以使用“&>操作符將兩類輸出信息保存到同一個(gè)文件。例如,在編譯源碼包的自動(dòng)化腳本中,若要忽略make,make install等操作過(guò)程信息,則可以將其定向到空文件/dev/null. 這里就不在多做演示。
2.管道操作
????????管道(pipe)操作為不同命令之間的協(xié)同工作提供了一種機(jī)制。位于管道符號(hào)左側(cè)的命令輸出的結(jié)果,將作為右側(cè)命令的輸入(處理對(duì)象),同一行命令中可以使用多個(gè)管道。
????????在Shell腳本應(yīng)用中,管道操作通常用來(lái)過(guò)濾所需要的關(guān)鍵信息,例如,使用grep命令查詢使用
????????/bin/bash作為Shell的用戶名稱時(shí),會(huì)輸出符合條件的整行內(nèi)容,在此基礎(chǔ)上可以結(jié)合管道操作與awk命令做進(jìn)一步過(guò)濾,只輸出用戶名和登錄Shell列。
提取前:
提取后:
????????上例中awk命令的作用是以冒號(hào):“作為分隔,輸出第1個(gè)、第7個(gè)區(qū)域的字
????????其中的“-F”部分用來(lái)指定分隔符號(hào)(未指定時(shí),默認(rèn)以空格或制表符分隔)。關(guān)于awk命令的更多用法,在后面的章節(jié)中再做詳細(xì)介紹,本章不做過(guò)多講解。
????????又如,若要提取根分區(qū)(/)的磁盤使用率信息,可以執(zhí)行以下操作,其中用到了df、grep.awk命令和管道操作。
提取前:
提取后:
????????重定向與管道操作是Shell環(huán)境中十分常用的功能,若能夠熟練掌握并靈活運(yùn)用,將有助于編寫代碼簡(jiǎn)潔但功能強(qiáng)大的Shell腳本程序。
三,使用Shell變量
????????各種Shell環(huán)境中都使用到了“變量”的概念.Shell變量用來(lái)存放系統(tǒng)和用戶需要使用的特定參數(shù)(值).而且這些參數(shù)可以根據(jù)用戶的設(shè)定或系統(tǒng)環(huán)境的變化而相應(yīng)變化。通過(guò)使用變量,Shell程序能夠提供更加靈活的功能,適應(yīng)性更強(qiáng)。
????????常見Shell 變量的類型包括自定義變量、環(huán)境變量,位置變量、預(yù)定義變量。本節(jié)將分別介紹這四種Shell變量的使用。
1.自定義變量
????????自定義變量是由系統(tǒng)用戶自己定義的變量,只在用戶自己的Shell環(huán)境中有效,因此又稱為本地變量。在編寫Shell 腳本程序時(shí),通常會(huì)設(shè)置一些特定的自定義變量,以適應(yīng)程序執(zhí)行過(guò)程中的各種變化,滿足不同的需要。
1)定義新的變量
??????? Bash中的變量操作相對(duì)比較簡(jiǎn)單,不像其他高級(jí)編程語(yǔ)言(如C/C++、Java等)那么復(fù)雜。
????????在定義一個(gè)新的變量時(shí),一般不需要提前進(jìn)行聲明,而是直接指定變量名稱并賦給初始值(內(nèi)容)即可。
????????定義變量的基本格式為“變量名=變量值”,等號(hào)兩邊沒(méi)有空格,變量名稱需以字母或下劃線開頭,名稱中不要包含特殊字符(如+、一、*、/.7.%.&、#等)。例如,若要定義一個(gè)名為name"的變量(值為CentOS)和一個(gè)名為“Version”的變量(值為2.7.13),可以執(zhí)行以下操作。
2.查看和引用變量的值
????????通過(guò)在變量名稱前添加前導(dǎo)符號(hào)“$”,可以引用一個(gè)變量的值。使用echo命令可以查看變量,可以在一條echo命令中同時(shí)查看多個(gè)變量值。
????????當(dāng)變量名稱容易和緊跟其后的其他字符相混淆時(shí),需要添加大括號(hào)"{}"將其括起來(lái),否則將無(wú)法確定正確的變量名稱。對(duì)于未定義的變量,將顯示為空值。
3.變量賦值的特殊操作
????????在等號(hào)=后邊直接指定變量?jī)?nèi)容是為變量賦值的最基本方法,除此之外,還有一些特殊的賦值操作,可以更靈活地為變量賦值,以便適用于各種復(fù)雜的管理任務(wù)。
1)雙引號(hào)(")
????????雙引號(hào)主要起界定字符串的作用,特別是當(dāng)要賦值的內(nèi)容中包含空格時(shí),必須以雙引號(hào)括起來(lái):
其他情況下雙引號(hào)通常可以省略。例如,若要將Python 2.7.13賦值給變量PYTHON,應(yīng)執(zhí)行PYTHON=“Python 2.7.13”操作。
加"之前
加"之后
????????在雙引號(hào)范圍內(nèi),使用“$”符號(hào)可以引用其他變量的值(變量引用),從而能夠直接調(diào)用現(xiàn)有變量的值來(lái)賦給新的變量,例如,執(zhí)行以下操作可以調(diào)用變量Version的值,將其賦給一個(gè)新的變量sqlserver,最終的值為“SOLServer 2.7.13”.
2)單引號(hào)(')
????????當(dāng)要賦值的內(nèi)容中包含$、\等具有特殊含義的字符時(shí),應(yīng)使用單引號(hào)括起來(lái)。在單引號(hào)的范圍內(nèi),將無(wú)法引用其他變量的值,任何字符均作為普通字符看待。但賦值內(nèi)容中包含單引號(hào)時(shí)。需使用\符號(hào)進(jìn)行轉(zhuǎn)義,以免沖突。
3)反撇號(hào)(`)
????????反撇號(hào)主要用于命令替換,允許將執(zhí)行某個(gè)命令的屏幕輸出結(jié)果賦值給變量。反撇號(hào)括起來(lái)的范圍內(nèi)必須是能夠執(zhí)行的命令行,否則將會(huì)出錯(cuò).例如,若要在一行命令中查找useradd命令程序的位置并列出其詳細(xì)屬性,可以執(zhí)行以下操作。
????????上述操作相當(dāng)于連續(xù)執(zhí)行了兩條命令——先通過(guò)which useradd 命令查找出useradd命令的程序位置,然后根據(jù)查找結(jié)果列出文件屬性。執(zhí)行過(guò)程中,會(huì)用which useradd命令的輸出結(jié)果替換整個(gè)反撇號(hào)范圍。
又若,我們創(chuàng)建一個(gè)名為alice的用戶,并為其設(shè)置密碼,用一行命令完成,可以如圖所示:
????????需要注意的是,使用反撇號(hào)難以在一行命令中實(shí)現(xiàn)嵌套命令替換操作,這時(shí)可以改用“$()來(lái)代替反撇號(hào)操作,以解決嵌套的問(wèn)題。例如,若要查詢提供useradd命令程序的軟件包所安裝的配置文件位置,可以執(zhí)行以下操作(從里到外先后執(zhí)行替換)。
4)read命令
????????除了上述賦值操作以外,還可以使用Bash的內(nèi)置命令read來(lái)給變量賦值。read命令用來(lái)提示用戶輸入信息,從而實(shí)現(xiàn)簡(jiǎn)單的交互過(guò)程。執(zhí)行時(shí)將從標(biāo)準(zhǔn)輸入設(shè)備(鍵盤)讀入一行內(nèi)容,并以空格為分隔符,將讀入的各字段依次賦值給指定的變量(多余的內(nèi)容賦值給最后一個(gè)變量)。若指定的變量只有一個(gè),則將整行內(nèi)容賦值給此變量。
????????為了使交互式操作的界面更加友好,提高易用性,read命令可以結(jié)合“一p選項(xiàng)來(lái)設(shè)置提示信息,以便告知用戶應(yīng)該輸入什么內(nèi)容等相關(guān)事項(xiàng)。例如,若希望提示用戶輸入備份文件的存放目錄,并將輸入的路徑信息賦值給變量beifen1和beifen2,可以執(zhí)行以下操作。
4.設(shè)置變量的作用范圍
?????????默認(rèn)情況下,新定義的變量只在當(dāng)前的Shell環(huán)境中有效,因此稱為局部變量。當(dāng)進(jìn)入子程序或新的子Shell環(huán)境時(shí),局部變量將無(wú)法再使用。例如,直接執(zhí)行Bash進(jìn)入一個(gè)新的子Shell 腳本后。
將無(wú)法引用父級(jí)Shell環(huán)境中定義的name等變量。
????????為了使用戶定義的變量在所有的子Shell環(huán)境中能夠繼續(xù)使用,減少重復(fù)設(shè)置工作,可以通過(guò)內(nèi)部命令export將指定的變量導(dǎo)出為全局變量。用戶可以同時(shí)指定多個(gè)變量名稱作為參數(shù)(無(wú)須使用5”符號(hào)),變量名之間以空格分隔。
5.數(shù)值變量的運(yùn)算
??????? Shell變量的數(shù)值運(yùn)算多用于腳本程序的過(guò)程控制(如循環(huán)次數(shù).使用量比較等,后續(xù)章節(jié)會(huì)介紹)。在Bash Shell環(huán)境中,只能進(jìn)行簡(jiǎn)單的整數(shù)運(yùn)算,不支持小數(shù)運(yùn)算。整數(shù)值的運(yùn)算主要通過(guò)內(nèi)部命令expr進(jìn)行,基本格式如下所示。需要注意,運(yùn)算符與變量之間必須有至少一個(gè)空格。
expr? 變量1? ?運(yùn)算符? 變量2? 運(yùn)算符? ?變量3…
其中,變量1、變量2……對(duì)應(yīng)為需要計(jì)算的數(shù)值變量(需要以“$符號(hào)調(diào)用),常用的幾種運(yùn)算符如下所述
+:加法運(yùn)算。
一:減法運(yùn)算。
\*:乘法運(yùn)算。注意不能僅使用*”符號(hào),否則將被當(dāng)成文件通配符。
/:除法運(yùn)算。
%:求余運(yùn)算,又稱為取余運(yùn)算,用來(lái)計(jì)算數(shù)值相除后的余數(shù)。
以下操作設(shè)置了a,b兩個(gè)變量,并依次演示了變量a,b的加,減、乘,除、取模運(yùn)算結(jié)果。
????????若要將運(yùn)算結(jié)果賦值給其他變量,可以結(jié)合命令替換操作(使用反撇號(hào))。例如,計(jì)算變量b的3次方,并將結(jié)果賦值給變量NUM.
5.特殊的Shell變量
????????除了用戶自行定義的Shell變量以外,在Linux系統(tǒng)和Bash Shell環(huán)境中還有一系列的特殊變量—環(huán)境變量、位置變量、預(yù)定義變量。下面分別進(jìn)行介紹。
1)環(huán)境變量
????????環(huán)境變量指的是出于運(yùn)行需要而由Linux系統(tǒng)提前創(chuàng)建的一類變量,主要用于設(shè)置用戶的工作環(huán)境,包括用戶宿主目錄,命令查找路徑、用戶當(dāng)前目錄、登錄終端等。環(huán)境變量的值由Linux系統(tǒng)自動(dòng)維護(hù),會(huì)隨著用戶狀態(tài)的改變而改變。
????????使用env命令可以查看到當(dāng)前工作環(huán)境下的環(huán)境變量,對(duì)于常見的一些環(huán)境變量應(yīng)了解其各自的用途。例如,變量USER表示用戶名稱,HOME表示用戶的宿主目錄,LANG表示語(yǔ)言和字符集,PWD表示當(dāng)前所在的工作目錄,PATH表示命令搜索路徑等。
??????? PATH變量用于設(shè)置可執(zhí)行程序的默認(rèn)搜索路徑,當(dāng)僅指定文件名稱來(lái)執(zhí)行命令程序時(shí),Linux系統(tǒng)將在PATH變量指定的目錄范圍查找對(duì)應(yīng)的可執(zhí)行文件,如果找不到則會(huì)提示“command not found"。例如test.sh腳本位于/root目錄下,若希望能直接通過(guò)文件名稱來(lái)運(yùn)行腳本,可以修改PATH變量以添加搜索路徑,或者將test.sh腳本復(fù)制到現(xiàn)有搜索路徑中的某個(gè)文件夾下。
2.位置變量
????????為了在使用Shell腳本程序時(shí),方便通過(guò)命令行為程序提供操作參數(shù),Bash引入了位置變量的概念.當(dāng)執(zhí)行命令行操作時(shí),第一個(gè)字段表示命令名或腳本程序名,其余的字符串參數(shù)按照從左到右的順序依次賦值給位置變量。
位置變量也稱為位置參數(shù),使用S1、s2、3.……s9表示。例如,當(dāng)執(zhí)行命令行‘1s ?-lh ?/boot/時(shí),其中第1個(gè)位置變量為“一h”,以“s1”表示;第2個(gè)位置變量為“/boot/”,以s2”表示。
????????命令或腳本本身的名稱使用“$0”表示,雖然$0與位置變量的格式相同,但是$0屬于預(yù)定義變量而不是位置變量。
例如:
3.預(yù)定義變量
????????預(yù)定義變量是由Bash程序預(yù)先定義好的一類特殊變量,用戶只能使用預(yù)定義變量,而不能創(chuàng)建新的預(yù)定義變量,也不能直接為預(yù)定義變量賦值。預(yù)定義變量使用s”符號(hào)和另一個(gè)符號(hào)組合表示,較常用的幾個(gè)預(yù)定義變量的含義如下。
5#:表示命令行中位置參數(shù)的個(gè)數(shù)。
5*:表示所有位置參數(shù)的內(nèi)容。
$?:表示前一條命令執(zhí)行后的返回狀態(tài),返回值為0表示執(zhí)行正確,返回任何非0值均表示執(zhí)行出現(xiàn)異常。關(guān)于52變量的使用將在下一章介紹。
$0;表示當(dāng)前執(zhí)行的腳本或程序的名稱。
? ?例如:
????????????????????????????????????????????????????實(shí)驗(yàn)案例
編寫root登錄歡迎腳本,報(bào)告當(dāng)前主機(jī)中的進(jìn)程數(shù),已登錄用戶數(shù),根文件系統(tǒng)的磁盤使用率,顯示如需求所示
1)創(chuàng)建welcomeRoot.sh 并編輯
????????2)添加執(zhí)行權(quán)限
????????3)修改/root/.bash_profile 每次登陸時(shí)加載/root/welcomeroot.sh腳本
????????4)測(cè)試,重啟計(jì)算機(jī),使用root賬戶登錄
2.編寫start、stop、status 三個(gè)腳本程序,用來(lái)啟動(dòng)、停止各種系統(tǒng)服務(wù)。例如,直接執(zhí)行“stop crond"“start crond”命令即可停止、啟動(dòng)crond服務(wù)。
????1)創(chuàng)建start腳本,進(jìn)行編輯
??2)創(chuàng)建stop腳本,進(jìn)行編輯
??3)創(chuàng)建status腳本,進(jìn)行編輯
????4)在PATH變量中添加/root路徑,方便以腳本名字直接啟動(dòng),停止,查看服務(wù)運(yùn)行狀態(tài)信息
5)為三個(gè)腳本添加執(zhí)行權(quán)限
???6)測(cè)試,安裝Apache服務(wù),用來(lái)測(cè)試
?????????? start:
????????????stop:
????????status:
?????????至此,實(shí)驗(yàn)完成
故事很短,道理很長(zhǎng),學(xué)無(wú)止境,不忘初心,砥礪前行 ?
微信搜索 “徐阿馬” ?關(guān)注公眾號(hào),把你們想知道的,想提的意見發(fā)給我,我會(huì)采納!期待你的關(guān)注!
總結(jié)
以上是生活随笔為你收集整理的bat脚本交互输入_Shell脚本的应用(一)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python基础——导入模块
- 下一篇: java hdfs 指定用户目录_HDF