【正文】
shecho “the program name is $0” //$0是一個特殊的變數(shù)echo “the first para is $1” //$1是一個位置參數(shù)echo “the program exit” //執(zhí)行時帶一個參數(shù) 如./ abcd 判斷并顯示位置參數(shù) !/bin/bash if [ d “$1”]。 echo .$I is up ||答案: !/bin/bash 如果在線,就顯示“ip is up” done作業(yè)四:寫一個腳本do ls [[:alpha:]][[:digit:]]*touch xy x2y 732mkdir pv /tmp/lstest答案: chmod R o= ./test作業(yè)二:寫一個腳本 cp r /etc/ ./testmkdir v /tmp/scripts (傳遞兩個參數(shù)并執(zhí)行腳本 () :wq echo first number $1 done練習四:寫一個腳本 echo $line exec 3/tmp/mypasswd for I in `ls /var/*`。 let num=0 cd /var 答案:!/bin/bash echo there are $num users練習二:寫一個腳本 num=$[$num+1] userid=`echo $I | cut d: f3`do LINES=`wc l $file | cut d f1` 答案一:!/bin/bash userid=`head $I $file | tail 1 |cut d: f3` echo hello $username,your UID is $userid echo there are $LINES users 答案二:!/bin/bash let num=0 (提示:for FILE in /var/*。do echo hello $I num=$[$num+1] done echo the number of files is $num練習三:寫一個腳本 答案:!/bin/bash for I in 2 4 6 10 13 15。 exec 3amp。 !/bin/bash (表示輸出第一個數(shù))echo second number $2 (表示輸出第二個數(shù))echo $(($1+$2)) echo $[$1*$2] (輸出兩數(shù)之積)echo $[$1/$2] (輸出兩數(shù)之商)作業(yè)一:寫一個腳本: !/bin/bash ,x2y,732 ,后跟一個任意數(shù)字,而后跟任意長度字符的文件或目錄datemkdir a1d b56e 6test !/bin/bash ping c1 w1 .$I amp。 done例題: 顯示日期和時間。then echo “$1 is directory ,existed” else echo “$1 does not exist ,now create it” mkdir $1 echo “$1 is created” fi //執(zhí)行時帶一個參數(shù) 問候用戶 !/bin/bash user=`whoami` case $user in teacher) echo “hello teacher”。a) 包含一段注釋,列出您的姓名、腳本的名稱和編寫這個腳本的目的。e) 顯示您的機器名。i) 顯示變量TERM、PATH和HOME的值。teacher)echo hello teacher。!/bin/bashcd /userdataI=1while [ $I le 50 ]do mkdir p userdata/user$I chmod ox user$II=$((I+1))done(基訓十四) 設計一個shell程序,備份并壓縮/etc目錄的所有內(nèi)容,存放在/root/bak目錄里,且文件名為如下形式y(tǒng)ymmdd_etc,yy為年,mm為月,dd為日。50 16 *** rm rf /abc/*(2) 下午5:50將/data目錄下的所有目錄和文件歸檔并壓縮為文件:。chmod 754 /userdata/user$ii=$(($i+1))done函數(shù)in_path:判斷傳入文件是否可執(zhí)行,若可執(zhí)行(且存在)返回0, 否則返回1;分析:為測試傳入文件是否在PATH所有的目錄中,需取得PATH中的每個路徑,可用循環(huán),但需要設定環(huán)境中的分隔符(借助環(huán)境變量IFS)為 PATH中的分隔符冒號”:” 注:$IFS 輸入分隔符. 當shell讀取輸入數(shù)據(jù)的時候,會把一組字符看做是單詞之間的分隔字符,它們通常是空格,制表符,和換行符.函數(shù)調(diào)用方式為 : in_path filenamein_path(){cmd=$1 $1為函數(shù)的參數(shù)1,以此類推retval=1 定義返回值變量oldIFS=$IFS IFS=: 設置新的IFS,并保存原來的以恢復使用for directory in $PATH for循環(huán)結(jié)構(gòu)二: for – indo if [ x directory/$cmd ] 。 then 條件等價于 n $var if [ “${var%${var?}}” = ‘/’ ] 。 前者(帶%的)返回 expr與var匹配成功位置之前的所有內(nèi)容,此處應為 var的第一個字符。理解如下:shell中的if條件可以是 表達式(需加方括號[]),另外還可以是命令或函數(shù)(不需方括號), 當命令執(zhí)行成功時會后繼執(zhí)行具體操作,經(jīng)測試,C語言中所說的true在shell中 用0表示,即if 0,才執(zhí)行then,因為linux下的程序?qū)崿F(xiàn)都是當返回0時表執(zhí)行成功。 then echo “Usage: $0 mand” $0 表此執(zhí)行文件 (具體內(nèi)容 以 執(zhí)行此文件時的輸入串為準) exit 0 fi 調(diào)用函數(shù),并經(jīng)第一個參數(shù)傳給函數(shù)checkForCmdInpath $1 對函數(shù)返回的結(jié)果進行判斷 $? 為函數(shù)的返回值,case $? in case 控制結(jié)構(gòu)的格式,注意紅色部分。 *) 。s/[^[:alnum:]]//g39。 sed ‘s/str1/str2/g’ file 將文件file中每行內(nèi)str1替換為str2 [[:alnum:]]表示所有字母和數(shù)字中的任一個字符。============== 完善程序代碼 =====================================!/bin/bashisvalidAlphaN