博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
shell的函数引用和数组
阅读量:6412 次
发布时间:2019-06-23

本文共 2973 字,大约阅读时间需要 9 分钟。

shell中的函数

函数就是吧一段代码整理到一个小单元中,并给这个小单元其一个名称,当用到这段代码时直接调用这个名称即可

函数中的特殊调用

linux中shell变量

$#,$@,$0,$1,$2的含义解释:变量说明:$$Shell本身的PID(ProcessID)$!Shell最后运行的后台Process的PID$?最后运行的命令的结束代码(返回值)$-使用Set命令设定的Flag一览$*所有参数列表。如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。$@所有参数列表。如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。$#添加到Shell的参数个数$0

Shell本身的文件名

这里需要注意$1-$n数值的意义

$1~$n
添加到Shell的各参数值。$1是第1参数、$2是第2参数…。

 

特殊$表示的含义,示例:

#!/bin/bash#printf "The complete list is %s\n" "$$"printf "The complete list is %s\n" "$!"printf "The complete list is %s\n" "$?"printf "The complete list is %s\n" "$*"printf "The complete list is %s\n" "$@"printf "The complete list is %s\n" "$#"printf "The complete list is %s\n" "$0"printf "The complete list is %s\n" "$1"printf "The complete list is %s\n" "$2

结果:

[root@localhost ~]$ bash params.sh 123456 QQThe complete list is 24249The complete list isThe complete list is 0The complete list is 123456 QQThe complete list is 123456The complete list is QQThe complete list is 2The complete list is params.shThe complete list is 123456The complete list is QQ

定义一个使用函数公式计算的数值结果

定义一个加法公式,引用函数将某两个数字相加得和

[root@localhost src]# vim jia.sh #!/bin/bashsum () {      s=$[$1+$2]      echo $s}sum 20 10[root@localhost src]# sh -x jia.sh + sum 20 10+ s=30+ echo 3030

shell函数脚本输出网卡ip

输入的网卡名称并输出显示该网卡的ip地址

[root@localhost src]# cat fun1.sh ip () {    ifconfig |grep -A1 "$1: " |awk '/inet/ {print $2}' }     read -p "Please input the eth name: " ethip $eth[root@localhost src]# sh -x fun1.sh + read -p 'Please input the eth name: ' ethPlease input the eth name: ens33+ ip ens33+ grep -A1 'ens33: '+ awk '/inet/ {print $2}'+ ifconfig192.168.1.234

判断输入网口名称并提取ip地址的while循环和if判断逻辑

[root@localhost src]# cat fun1.sh #!/bin/bash  ip () {    ifconfig |grep -A1 "$1: " |awk '/inet/ {print $2}' }     while :;do   read -p "Please input the eth name: " eth  n=`ifconfig |grep $eth`    if [ -z $eth ]     then        echo "必须输入一个网口名称"         elif [ -z "$n" ]          then               echo "s输入正确的网口名称"           continue             else           break     fidoneip_=`ip $eth`if [ -z $ip_ ]  then    echo "$eth:这个网卡没有配置ip"  else    echo "$ip_" fi

shell中的数组

数组是一个变量中引用的多个数值,数值不一定是数字也可以是字符

定义数组
数组=(数值或字符)

a=(1 2 3 4 5)

获取数组所有的数值,@表示数组内所有的值

echo ${a[@]}

获取数组元素的个数

echo ${#a[@]}

获取数组的第三个元素,数组内数值是按照从0开始的顺序计算的,0对应第一个字符,1对应第二个字符....以此类推

echo ${a[2]}

数组赋值或添加下标元素

a[5]=100

如果该下标不存在元素时则会添加这个指定的数值元素

删除数组或取消某一个元素

uset a

或取消一个下标是第一位、是第三位的数组元素   unset a[1]

数组分片

a=(`seq 1 10`)   echo $a{[@]:2:4}

 截取四个字符,从第三个数值开始,0对应数组的数值1的位置,截取四个字符结束,例如结果如下

[root@localhost src]# echo ${a[@]:2:4}3 4 5 6

截取倒数字符

echo ${a[@]:0-2:3}  
0-2表示从一段数组中的哪个位置开始往后计算,3表示截取几个数值。如下操作示例

[root@localhost src]# echo ${a[@]:0-2:4}9 10[root@localhost src]# echo ${a[@]:0-5:4}6 7 8 9

数组替换

echo ${a[@]/3/100} a=(${a[@]/3/222})

如下,将数组中某个下标数值替换成其他数值

[root@localhost src]# echo ${a[@]/3/100}1 2 100 4 5 6 7 8 9 10[root@localhost src]# a=(${a[@]/3/222})[root@localhost src]# echo ${a[@]}1 2 222 4 5 6 7 8 9 10

转载于:https://blog.51cto.com/8844414/2177584

你可能感兴趣的文章
分布式--Linux Shell使用
查看>>
哦,这就是java的优雅停机?(实现及原理)
查看>>
UI设计师必备的五款界面设计工具
查看>>
Oracle-单表查询
查看>>
redis 系列5 数据结构之字典(上)
查看>>
爬虫数据库MongoDB的介绍
查看>>
4.2WebHost配置「深入浅出ASP.NET Core系列」
查看>>
Redis 哨兵Sentinel 高可用(学习笔记九)
查看>>
mybatis关于Criteria的用法小坑
查看>>
报考排队1小时?平安科技说只需90秒
查看>>
T-SQL学习中--窗口函数
查看>>
浅谈web开发
查看>>
Go 语言从新手到大神:每个人都会踩的五十个坑 (13-22)
查看>>
Android——Matrix变换矩阵的探索(1)
查看>>
04.构造函数 析构函数 拷贝函数
查看>>
到目前为止,生活教会给你最重要的一件事是什么?
查看>>
重拾Java(2)-运算符
查看>>
Linux系统诊断小技巧(15):启停问题之如何修复文件系统损坏
查看>>
Go语言基础语法-4
查看>>
使用Spring Boot 发送邮件(持续更新...)
查看>>