4.1 問題
本案例要求編寫腳本mycolor.sh,相關要求如下:
將顏色輸出的功能定義爲函數
調用函數,可以自定義輸出內容和顏色
4.2 方案
在Shell腳本中,將一些需重複使用的操作,定義爲公共的語句塊,即可稱爲函數。通過使用函數,可以使腳本代碼更加簡潔,增強易讀性,提高Shell腳本的執行效率
1)函數的定義方法
格式1:
function 函數名 {
命令序列
… …
}
格式2:
函數名() {
命令序列
… …
}
2)函數的調用
直接使用“函數名”的形式調用,如果該函數能夠處理位置參數,則可以使用“函數名 參數1 參數2 … …”的形式調用。
注意:函數的定義語句必須出現在調用之前,否則無法執行。
- 測試語法格式
[root@svr5 ~]# mycd(){ //定義函數
mkdir /test
cd /test
}
[root@svr5 ~]# mycd //調用函數
[root@svr5 ~]# mycd(){ //定義函數
mkdir $1
cd $1
}
[root@svr5 ~]# mycd /abc //調用函數
[root@svr5 ~]# mycd /360 //調用函數
4.3 步驟
實現此案例需要按照如下步驟進行。
步驟一:編寫mycolor.sh腳本
1)任務需求及思路分析
用戶在執行時提供2個整數參數,這個可以通過位置變量$1、$2讀入。
調用函數時,將用戶提供的兩個參數傳遞給函數處理。
顏色輸出的命令:echo -e “\033[32mOK\033[0m”。
3X爲字體顏色,4X爲背景顏色。
2)根據實現思路編寫腳本文件
[root@svr5 ~]# vim mycolor.sh
#!/bin/bash
cecho() {
echo -e “\033[$1m$2\033[0m”
}
cecho 32 OK
cecho 33 OK
cecho 34 OK
cecho 35 OK
[root@svr5 ~]# chmod +x mycolor.sh
3)測試腳本執行效果
[root@svr5 ~]# ./mycolor.sh
使用函數,優化改進前面的腳本:
[root@svr5 ~]# vim myping.sh
#!/bin/bash
myping(){
ping -c1 -W1 $1 &>/dev/null
if [ $? -eq 0 ];then
echo “$1 is up”
else
echo "KaTeX parse error: Expected 'EOF', got '}' at position 19: …s down"
fi
}̲
for i in {1…i &
done
wait
#wait命令的作用是等待所有後臺進程都結束才結束腳本。
Shell版本的fork炸彈
[root@svr5 ~]# vim test.sh
#!/bin/bash
.(){
.|.&
}
.