【摘要】 介紹Linux下Shell編程,介紹shell里語(yǔ)句、變量、函數(shù)、運(yùn)算符的使用。
任務(wù)1:Shell腳本語(yǔ)言
Linux下常用的腳本語(yǔ)言。
變量、數(shù)組、for、while、函數(shù)、運(yùn)算符、if、……..
[root@wbyq /]# ls /bin/sh -l lrwxrwxrwx. 1 root root 4 12月 27 2016 /bin/sh -> bash |
??變量定義使用
#!/bin/bash ABC=12345 echo "ABC=$ABC" echo "ABC=${ABC}" |
??Shell腳本傳遞參數(shù) 類似于C語(yǔ)言的argv argc
#!/bin/bash echo "cnt=$#" echo "[0]=$0" echo "[1]=$1" echo "[2]=$2" echo "[3]=$3" |
??if語(yǔ)句語(yǔ)法規(guī)則
#!/bin/bash a=10 b=20 if [ ${a} -eq ${b} ] #判斷兩個(gè)數(shù)是否相等,也可以使用 == then echo "123" else echo "456" fi #!/bin/bash if [ 100 == 120 -o 50 != 40 ] && [ 100 == 200 ] then echo "條件為真" else echo "條件為假" fi #一個(gè)[]表示一個(gè)完整的表達(dá)式 #-a表示與 -o表示或 只能用于單個(gè)表達(dá)式之內(nèi) #多個(gè)表達(dá)式之間可以使用&&和 || 嵌套連接 #!/bin/bash #嵌套if語(yǔ)句示例 if [ 100 == 120 -o 50 != 40 ] && [ 100 == 200 ] then if [ 100 == 120 -o 50 != 40 ] && [ 100 == 200 ] then echo "條件為真" else echo "條件為假" fi else if [ 100 == 120 -o 50 != 40 ] && [ 100 == 200 ] then echo "條件為真" else echo "條件為假" fi fi |
??計(jì)算字符串長(zhǎng)度
#!/bin/bash string="abcd" echo ${#string} #輸出 4 |
??數(shù)組語(yǔ)法
#!/bin/bash buff=(1 2 3 4 5 6 7 8 9) buff[0]=88 buff[1]=99 buff[100]=100 buff[88]=55 echo "buff[0]=${buff[0]}" echo "buff[1]=${buff[1]}" echo "buff[2]=${buff[2]}" echo "buff[100]=${buff[100]}" |
??echo用法示例
#!/bin/bash DATA=12345 echo "DATA=${DATA}" |
??printf語(yǔ)句格式
#!/bin/bash printf "%d\n" 1234 printf "%s\n" "45678" |
??從鍵盤上讀取數(shù)據(jù)
#!/bin/bash echo -n "輸入數(shù)據(jù):" #參數(shù)-n 的作用是不換行, echo 默認(rèn)是換行 read data #從鍵盤輸入 echo "你輸入的數(shù)據(jù)為: $data" #顯示信息 |
??Case多分支選擇語(yǔ)句
#!/bin/bash echo "輸入一個(gè) 1 到 4 之間的數(shù)字" read aNum case ${aNum} in 1) echo "你選擇 1" ;; 2) echo "你選擇 2" ;; 3) echo "你選擇 3" ;; 4) echo "你選擇 4" ;; 5) echo "你選擇 4" ;; *) echo "你不選擇一個(gè)數(shù)字不在 1 到 4 之間" ;; esac |
??for循環(huán)
(1)基本用法 #!/bin/bash for loop in 1 2 3 4 5 6 7 8 9 do echo "loop=${loop}" done (2) 嵌套示例 #!/bin/bash for loop in 1 2 3 do for loop in 1 2 3 do echo "loop=${loop}" done done (3)輸出位置路徑 #!/bin/bash for loop in /test/*.sh do echo "file_name=${loop}" done |
??break關(guān)鍵字
#!/bin/bash for loop in 1 2 3 do for loop in 1 2 3 do echo "loop=${loop}" break 2 #break后面可以加參數(shù),選擇跳出的循環(huán)層次 done done |
??while循環(huán)示例
(1)示例1 #!/bin/bash while : #無(wú)限循環(huán)條件 do sleep 1 #休眠1秒鐘 echo "123" break 1 #跳出指定層次的循環(huán) done (2)示例2 #!/bin/bash COUNTER=0 while [ ${COUNTER} -lt 5 ] do COUNTER=`expr ${COUNTER} + 1` echo "COUNTER=${COUNTER}" done COUNTER=0 while [ ${COUNTER} != 5 ] do COUNTER=`expr ${COUNTER} + 1` echo "COUNTER=${COUNTER}" done (2)示例3 #!/bin/bash while read DATA do echo "DATA=${DATA}" done (3)示例4 #!/bin/bash while read DATA do echo "DATA=${DATA}" continue #跳出當(dāng)前這一次循環(huán) echo "1234556" done |
??函數(shù)
(1)?基本示例 #!/bin/bash #函數(shù)的編寫格式 func() { echo "函數(shù)調(diào)用調(diào)用成功!" } func #調(diào)用函數(shù)不需要加() (2)?嵌套調(diào)用 #!/bin/bash #函數(shù)的編寫格式 func1() { func2 } func2() { echo "函數(shù)調(diào)用調(diào)用成功!" } func1 #調(diào)用函數(shù)不需要加() (3)?函數(shù)的返回值 #!/bin/bash #函數(shù)的編寫格式 func() { return 255 #最大范圍是255 } func #調(diào)用函數(shù)不需要加 echo $? (4)?函數(shù)的形參 #!/bin/bash #函數(shù)的編寫格式 func() { echo "$1" echo "$2" echo "$3" echo "$4" return 255 #函數(shù)返回值只能是整數(shù),最好不要返回路徑。 } func 123 456 789 dfvbfdjvbgdf echo $? |
??調(diào)用外部腳本
#!/bin/bash . 123.sh source 123.sh echo "a=${a}" echo "b=${b}" echo "c=${c}" |
??Shell腳本練習(xí)
1.?從鍵盤上輸入年份,判斷平年閏年。
#!/bin/bash
echo -n "請(qǐng)輸入年份:" # -n 不換行
read year #從鍵盤上讀取年份
#能被400整除 ,能被4整除不能被100整除
if [ `expr $year % 400` == 0 ] || [ `expr $year % 4` == 0 -a `expr $year % 100` != 0 ]
then
echo "$year是閏年"
else
echo "$year是平年"
fi
2.?輸出9*9乘法口訣表。
3.?冒泡排序。
4.?使用函數(shù)封裝判斷平年閏年
5.?輸出所有水仙花數(shù)(個(gè)位+十位+百位的立方和=本身)例如: 1*1*1+2*2*2+3*3*3=123
6.?判斷100~200之間所有的素?cái)?shù)
7. 寫一個(gè)腳本
(1). 切換工作目錄至指定目錄
(2). 依次向指定目錄中的每個(gè)文件或子目錄問(wèn)好,形如:
(提示:for FILE in /var/*;或for FILE in `ls /var`;)
Hello,log
(3).統(tǒng)計(jì)/var目錄下共有多個(gè)文件,并顯示出來(lái)
8. 寫一個(gè)腳本, 通過(guò)ping命令測(cè)試192.168.x.0到192.168.x.254之間的所有主機(jī)是否在線
如果在線,就顯示“在線”
如果不在線,就顯示“離線”
注意:ping -c1 -w1 中-c1是指ping的次數(shù),-w是指執(zhí)行的最后期限,也就是執(zhí)行的時(shí)間,單位為秒
9. 模擬linnux登錄shell
就是輸入用戶名密碼判斷是否正確。
10. 查找指定目錄下最大的文件,然后輸出
11. 將指定目錄下的所有指定后綴文件,按照統(tǒng)一的方式命名。
-
Linux
+關(guān)注
關(guān)注
87文章
11345瀏覽量
210399 -
編程語(yǔ)言
+關(guān)注
關(guān)注
10文章
1950瀏覽量
34987 -
Shell腳本
+關(guān)注
關(guān)注
0文章
36瀏覽量
8023
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論