shell编程函数

shell编程函数

函数介绍

函数就是具备某一个功能的工具

为什么要使用函数

如果不使用函数你的代码就会:
1.程序的组织不够清晰,可读性差
2.代码冗余
3.可扩展性 (功能要修改的时候...对不起GG)

如何使用函数

函数的使用必须遵循的原则:先定义,后调用
修理工事先准备好工具的过程就是定义函数
修理工遇到应用场景拿来工具就用即函数的调用

函数的语法

function 函数名 (){
	命令1
	命令2
	命令3
}

function 函数名 {
	命令1
	命令2
	命令3
}

函数名 (){
	命令1
	命令2
	命令3
}

函数位置变量VS脚本位置变量

特殊变量 脚本 函数
$N 脚本的第N个参数 函数的第N个参数
$0 脚本的名字 脚本的名字
$* $@ 脚本的所有参数 函数的所有参数
$# 脚本传递的参数个数 函数传递的参数个数

函数返回值

1.函数返回值必须是numeric,数字
2.返回值有个数的限制,只能写一个返回值

# 返回值方便我们后续的判断,包括变量的传递

# 监控系统内存,如果不足30%就发送邮件告警通知运维人员
aaa (){
        a=`free -m|awk 'NR==2{print $4/$2*100}'`
        if [ $a -lt 30 ];then
                echo '空闲内存剩余30%' | mail -s '内存不足' 2646491240@qq.com
        fi
        if [ $a -lt 30 ];then
                return 1
        else
                return 0
        fi
}
aaa
echo $?

作业

nginx (){
    mkdir -p /nginx
    ls /nginx/nginx-1.22.0  &> /dev/null
    if [ $? -eq 0 ];then
        echo 你已经下载nginx源码包
    else
        cd /nginx && wget http://nginx.org/download/nginx-1.22.0.tar.gz
        tar xf nginx-1.22.0.tar.gz 
        yum -y install gcc gcc-c++ glibc pcre-devel openssl-devel
        cd /nginx/nginx-1.22.0
        ./configure --prefix=/opt/nginx-1.22.0 --with-http_ssl_module --with-http_stub_status_module
        make
        make install
        ln -s /opt/nginx-1.22.0/ /opt/nginx
        echo 'export PATH="$PATH=:/opt/nginx/sbin"' >  /etc/profile.d/nginx.sh
        source /etc/profile
        sh /etc/profile
    fi
}
mysql (){
    yum -y install mariadb-server
}
php (){
    ls /etc/php.d/ &> /dev/null
    if [ $? -eq 0 ];then
        echo '你已经安装过PHP'
    else
        cd /php
        yum -y localinstall *.rpm
    fi
}

http (){
    ls /etc/httpd/ &> /dev/null && echo '你已经安装过http' ||  yum -y install httpd 
}
tomcat (){
    ls /etc/tomcat/ &> /dev/null && echo '你已经安装过tomcat' || {
            cd /tomcat && yum -y localinstall *.rpm
    }
}

cat <<EOF
+---------+
| 1.lnmp  |
+---------+
| 2.lnmt  |
+---------+
| 3.lamp  |
+---------+
| 4.lamt  |
+---------+
| 5.nginx |
+---------+
| 6.apache|
+---------+
| 7.tomcat|
+---------+
| 8.php   |
+---------+
EOF
read -p "请输入要下载的序号" aa
if [ $aa -eq 1 ];then
    nginx
    mysql
    php
elif [ $aa -eq 2 ];then
    nginx
    mysql
    tomcat
elif [ $aa -eq 3 ];then
    http
    mysql
    php
elif [ $aa -eq 4 ];then
    http
    mysql
    tomcat
elif [ $aa -eq 5 ];then
    nginx
elif [ $aa -eq 6 ];then
    http
elif [ $aa -eq 7 ];then
    php
fi
posted @   FYytfg  阅读(46)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示