【Shell】Shell函数

Shell函数是Shell脚本中由命令集和语句组成的代码块,这个代码块可以被其他脚本或是脚本中的其他部分所调用,所以Shell函数可以使程序模块化,即把代码分隔成独立的任务块,这样,则可不必每次为了执行相同的任务而重写代码。

(一)函数的定义

定义函数的语法如下:

# 函数名
function_name()
{
	# 函数体,在函数中执行的命令行
	commands...
	# 参数返回,return语句是可选的。如果没有return语句,则以函数最后一条命令的运行结果作为返回值;如果使用return语句,则return后跟数值n(数值范围:0~255[ return int; ]

}

或者,如果愿意,可在函数名前加上关键字function

function function_name()
{
	commands...
}

如果由function关键字,则可以省略圆括号 “()”。函数体,也叫复合命令块,是包在{}之间的命令列表。

也可以在一行内定义一个函数,此时,函数体内的各命令之间必须用分号 “ ; ” 隔开,语法规则如下:

function name { command1; command2; commandN; }
或者
name() { command1; command2; commandN; }
//可以使用内部命令unset的“-f” 选项来取消函数的定义。

注意: 通常情况下,函数体外的大括号与函数体之间必须用空白符(空格、回车或制表
符等)或换行符分开,因为大括号“{}”是保留字,但只有“{”或“}”与其中间的命令列表被空格或其他Shell元字符(比如,;或|等)分隔时,才能被识别为保留字。

(二)实例

1. 一个简单的 Bash 脚本,定义了一个名为 cecho 的函数,用于以不同的颜色输出文本。

$ cat cecho.fun
#!/bin/bash
cecho() {
    echo -e "\033[$1m$2\033[0m"
}
cecho 32 OK
cecho 33 OK
cecho 34 OK
cecho 35 OK

$ chmod +x cecho.fun 
$ ./cecho.fun 
OK
OK
OK
OK

2. 一个 Bash 脚本,用于对一个子网中的所有 IP 地址进行 ping 操作,以检查它们是否在线。下面是对脚本的逐行解析

$ cat myping.fun 
#!/bin/bash
myping(){
    ping -c1 -W1  $1  &>/dev/null
    if [ $? -eq 0 ];then
        echo "$1 is up"
    else
        echo "$1 is down"
    fi
}
for  i  in  {1..254}
do
     myping  10.0.0.$i  &
done
wait
$ chmod +x myping.fun 
$ ./myping.fun 
10.0.0.1 is up
10.0.0.2 is up
10.0.0.88 is up
10.0.0.7 is down
10.0.0.9 is down
10.0.0.6 is down
10.0.0.10 is down
10.0.0.5 is down
10.0.0.4 is down
10.0.0.3 is down
10.0.0.11 is down
10.0.0.8 is down
...

在这里插入图片描述

3. 一个 Bash 脚本,用于计算用户输入的一系列整数的总和。

$ cat sum.fun
#!/bin/bash
SUM=0
while :
do 
read  -p  "请输入整数(0表示结束):"  x
    [ $x -eq 0 ]  &&  break
    SUM=$[SUM+x]
done
echo "总和是:$SUM"

$ chmod +x sum.fun
$ ./sum.fun
请输入整数(0表示结束):5
请输入整数(0表示结束):6
请输入整数(0表示结束):0
总和是:11

4. 一个 Bash 脚本,目的是打印出 1 到 20 之间所有能被 6 整除的数的平方。

$ cat 6.fun 
#!/bin/bash
for i in {1..20}
do
    [ $[i%6] -ne 0 ]  &&  continue
    echo $[i*i]
done
$ chmod +x 6.fun 
$ ./6.fun 
36
144
324

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值