腳本編程能力是作為運維工程師不可或缺的一項基本技能,各種系統的運維,如果完全靠命令行一條一條命令來執行,工作效率可想而知,而腳本卻可以將完成一定功能的各個命令依據一定的流程控制,邏輯判斷去完成某種功能,提升工作效率。學習shell腳本,光學習理論是遠遠不夠的,所以在學習中要多多練習,下面就看一些關于shell腳本基礎的練習
(1) 編寫腳本/root/bin/sumid.sh,計算/etc/passwd文件中的第10個用戶和第20用戶的ID之和
$1、$2表示的是位置變量,作用是在腳本代碼中通過命令傳遞給腳本的參數。在這里定義里兩個變量UID_10和UID_20 ,用來存儲某個用戶的uid,在給變量賦值的過程中,可以引用命令執行的結果,使用管道符過濾出想要的結果,賦值給變量。
在執行腳本的時候,輸入兩個位置變量參數,在執行時,腳本代碼就會調用這兩個參數,實現想要完成的操作。使用位置參數,不僅可以計算第十個和第二十個用戶的uid之和,還可以計算任意兩個用戶的uid之和,只要在執行腳本時輸入想要查詢第幾個用戶,就可以完成。
(2)編寫腳本/root/bin/sumspace.sh,傳遞兩個文件路徑作為參數給腳本,計算這兩個文件中所有空白行之和
傳遞兩個文件路徑參數$1、$2 , 在執行腳本代碼中設置兩個變量表示兩個文件的空白行數,在給變量賦值時調用命令執行的結果,在賦值時支持正則表達式。
(3)編寫腳本/root/bin/sumfile.sh,統計/etc, /var, /usr目錄中共有多少個一級子目錄和文件
三個位置參數表示目錄名,使用ls -A 過濾掉當前目錄“.”和上級目錄“..”,這樣顯示的就只有一級子目錄和文件了。
(4)編寫腳本/bin/per.sh,判斷當前用戶對指定的參數文件,是否不可讀并且不可寫
-r filename 是用來判斷文件是否可讀,可讀時為真,-w filename是用來判斷文件是否可寫,可寫時為真。 “!”后加命令表示“非”,所以腳本執行的結果是當“[ ]”中為真時,輸出不可讀不可寫,當為假時,輸出顯示該文件可讀或者可寫。
(5)編寫腳本/root/bin/excute.sh ,判斷參數文件是否為sh后綴的普通文件,如果是,添加所有人可執行權限,否則提示用戶非腳本文件
定義變量var1 因為輸入的位置變量$1是一個文件的路徑,所以使用basename命令用來取出輸入的路徑的基名。
原創文章,作者:Melissa,如若轉載,請注明出處:http://www.www58058.com/83670