函数函数参数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了函数函数参数相关的知识,希望对你有一定的参考价值。
函数Linux shell 可以用户定义函数,然后再shell脚本中可以随便调用;
shell中函数的定义格式如下:
[ function ] funname [ () ]
{
action;
[return int;]
}
说明:
可以带function fun()定义,也可以直接fun()定义,不带任何参数;
参数返回,可以显示加:return返回,如果不加,将一最后一条命令运行结果,作为返回值。return后面跟数值n(0-255);
举例:
#!/bin/bash
abc() {
echo "this is shell"
}
echo "------开始执行函数------"
abc
echo "------函数执行完毕------"
运行结果:
------开始执行函数------
this is shell
------函数执行完毕------
举例:
显示指定网卡ip
#!/bin/bash
ip(){
ifconfig |grep -A1 "$1" |tail -1|awk ‘{print $2}‘
#注意,grep中的$1是需要输入的函数第一个参数,-A1 表示显示符合$1参数的下一行,-A2就是显示符合的下两行
#tail -1 表示显示倒数第一行
#awk这里是截取显示以空格为间隔的第二行数据
}
read -p "Please input the eth name:" e
#输出显示Please input the eth name:,接受用户输入,将输入的值赋予变量e
myip=`ip $e`
echo "$e address is $myip"
运行结果:
提示你输入网卡名
Please input the eth name:eth0
eth0 address is 172.16.182.241
正则命令说明:
ifconfig
显示本机ip
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.16.182.241 netmask 255.255.240.0 broadcast 172.16.191.255
ether 00:16:3e:0f:a0:3a txqueuelen 1000 (Ethernet)
RX packets 326626 bytes 87332731 (83.2 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 284748 bytes 54875176 (52.3 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
loop txqueuelen 1 (Local Loopback)
RX packets 30 bytes 3313 (3.2 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 30 bytes 3313 (3.2 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ifconfig |grep -A1 "eth0"
将显示本机ip,将符合eth0的下一行也显示出来
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.16.182.241 netmask 255.255.240.0 broadcast 172.16.191.255
ifconfig |grep -A1 "eth0"|tail -1
将上一个结果的显示倒数第一行
inet 172.16.182.241 netmask 255.255.240.0 broadcast 172.16.191.255
ifconfig |grep -A1 "eth0"|tail -1|awk ‘{print $2}‘
以空格为隔离符,显示第二段
172.16.182.241
函数参数
- 在shell中,调用函数时候可以像其传递参数。
- 在函数体内部,通过$n的形式来获取参数的值;例如,$1表示第一个参数,$2表示第二个参数$$
#!/bin/bash
funcs(){
echo "第一个参数:$1"
echo "第二个参数:$2"
echo “第十个参数:$10”
echo "第十个参数:${10}"
echo "第十一个参数:${11}"
echo "参数总共有: $# 个"
echo "作为一个字符串输出所有参数: $*"
}
funcs 1 2 3 4 5 6 7 8 9 66 88
输出结果:
第一个参数:1
第二个参数:2
“第十个参数:10”
第十个参数:66
第十一个参数:88
参数总共有: 11 个
作为一个字符串输出所有参数: 1 2 3 4 5 6 7 8 9 66 88
说明:
$10不能获取第十个参数,获取第十个参数需要${10},加上大括号,需要使用${n}来表示参数;
特殊字符参数
字符 意义 $# 统计脚本参数的个数 $* 以一个字符串显示所有向脚本传递的参数 $$ 脚本运行的当前进程ID号 $! 后台运行的最后一个进程的ID号
以上是关于函数函数参数的主要内容,如果未能解决你的问题,请参考以下文章