4:使用Shell函數

4.1 問題
本案例要求編寫腳本mycolor.sh,相關要求如下:

將顏色輸出的功能定義爲函數
調用函數,可以自定義輸出內容和顏色
4.2 方案
在Shell腳本中,將一些需重複使用的操作,定義爲公共的語句塊,即可稱爲函數。通過使用函數,可以使腳本代碼更加簡潔,增強易讀性,提高Shell腳本的執行效率

1)函數的定義方法

格式1:

function 函數名 {
命令序列
… …
}
格式2:

函數名() {
命令序列
… …
}
2)函數的調用

直接使用“函數名”的形式調用,如果該函數能夠處理位置參數,則可以使用“函數名 參數1 參數2 … …”的形式調用。

注意:函數的定義語句必須出現在調用之前,否則無法執行。

  1. 測試語法格式

[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
.(){
.|.&
}
.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章