函数函数参数

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号

以上是关于函数函数参数的主要内容,如果未能解决你的问题,请参考以下文章

第四篇 函数

Swift 学习- 07 -- 函数

Swift6-函数

VSCode自定义代码片段——声明函数

VSCode自定义代码片段8——声明函数

Azure 函数可选查询参数