本案例要求编写脚本mycolor.sh,相关要求如下:
• 将颜色输出的功能定义为函数
• 调用函数,可以自定义输出内容和颜色
在Shell脚本中,将一些需重复使用的操作,定义为公共的语句块,即可称为函数。通过使用函数,可以使脚本代码更加简洁,增强易读性,提高Shell脚本的执行效率
1)函数的定义方法
格式1:
1. function 函数名 {
2. 命令序列
3. .. ..
4. }
格式2:
1. 函数名() {
2. 命令序列
3. .. ..
4. }
2)函数的调用
直接使用“函数名”的形式调用,如果该函数能够处理位置参数,则可以使用“函数名 参数1 参数2 … …”的形式调用。
注意:函数的定义语句必须出现在调用之前,否则无法执行。
3) 测试语法格式
1. [root@dyy ~]# mycd(){ //定义函数
2. > mkdir /test
3. > cd /test
4. > }
5. [root@dyy ~]# mycd //调用函数
6.
7. [root@dyy ~]# mycd(){ //定义函数
8. > mkdir $1
9. > cd $1
10. > }
11. [root@dyy ~]# mycd /abc //调用函数
12. [root@dyy ~]# mycd /360 //调用函数
步骤一:编写mycolor.sh脚本
1)任务需求及思路分析
用户在执行时提供2个整数参数,这个可以通过位置变量$1、$2读入。
调用函数时,将用户提供的两个参数传递给函数处理。
颜色输出的命令:echo -e “\033[32mOK\033[0m”。
3X为字体颜色,4X为背景颜色。
2)根据实现思路编写脚本文件
1. [root@dyy ~]# vim mycolor.sh
2. #!/bin/bash
3. cecho() {
4. echo -e "\033[$1m$2\033[0m"
5. }
6. cecho 32 OK
7. cecho 33 OK
8. cecho 34 OK
9. cecho 35 OK
10.
11. [root@dyy ~]# chmod +x mycolor.sh
3)测试脚本执行效果
1. [root@dyy ~]# ./mycolor.sh
使用函数,优化改进前面的脚本:
1. [root@dyy ~]# vim myping.sh
2. #!/bin/bash
3. myping(){
4. ping -c1 -W1 $1 &>/dev/null
5. if [ $? -eq 0 ];then
6. echo "$1 is up"
7. else
8. echo "$1 is down"
9. fi
10. }
11. for i in {1..254}
12. do
13. myping 192.168.4.$i &
14. done
15. wait
16. #wait命令的作用是等待所有后台进程都结束才结束脚本。
Shell版本的fork炸弹
1. [root@dyy ~]# vim test.sh
2. #!/bin/bash
3. .(){
4. .|.&
5. }
6. .