shell脚本进阶函数实现
1.定义函数
语法一:
func_name(){
...函数体...
}
语法二:
function func.name{ ...函数体... }
语法三:
function func_name(){ ...函数体... }
例:定义一个简单的函数
[root@centos7 data]# func1(){ hostname; uanme -r; hostname -I; }
执行:
1 2 3 4 | [root@centos7 data] # func1 centos7.localdomain 3.10.0-1160.el7.x86_64 192.168.93.145 192.168.122.1 fd15:4ba5:5a2b:1008:37a:d5f9:1a01:2c29 |
2.显示系统中目前支持的函数列表
[root@centos7 data]# declare -F
3.显示每个函数的定义
[root@centos7 data]# declare -f
4.在脚本中写入函数
例子:判断操作操作系统版本安装httpd/apache2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | #!/bin/bash OS_type(){ if grep -i -q ubuntu /etc/os-release ; then echo ubuntu elif grep -i -q centos /etc/os-release ; then echo centos else echo "OS can not be supported!" fi } if [ `OS_type` = centos ]; then yum -y install httpd elif [ `OS_type` = ubuntu ]; then apt -y install apache2 else echo "OS can not be supported!" fi |
5.1)写一个专门装函数的文件,方便以后引用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #!/bin/bash OS_type(){ if grep -i -q ubuntu /etc/os-release ; then echo ubuntu elif grep -i -q centos /etc/os-release ; then echo centos else echo "OS can not be supported!" fi } color(){ RED= "echo -e \E[1;31m" GREEN= "echo -e \E[1;32m" END= "\E[0m" } |
2)修改4的脚本
1 2 3 4 5 6 7 8 9 10 | #!/bin/bash . function if [ `OS_type` = centos ]; then yum -y install httpd elif [`OS_type` = ubuntu ]; then apt -y install apache2 else echo "OS can not be supported!" <br> fi color ${RED} "安装成功" $END |
注意一点:若函数内有变量,不仅需要定义,还需要执行。
6.有参数的函数
例子:判断ip是否为合法ip
1 2 3 | is_ipaddr(){ [[ "$1" =~ ^([0-9]{1,3}\.){3}\.[0-9]{1,3}$ ]] || { echo "$1" is not valid ip!"; return 1; } } |
记录于2022/3/5-18:17
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话