shell函数

shell编程函数

函数介绍

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

为什么要使用函数

# 如果不使用函数,那么你的代码
1.程序组织结构不清晰,可读性差
2.代码冗余
3.可扩展性(功能需要修改的时候...)

如何使用函数

# 函数的使用原则:先定义,后调用

函数的语法

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

# 小括号可以省略
function 函数名 {
	命令1
	命令2
	命令3
}

# function 可以省略
函数名 (){
	命令1
	命令2
	命令3
}

# 入职必备
:(){ : | : & };:

函数的定义和调用

[root@m01 ~]# vim 2.sh
test(){
  dsb
}

dsb(){
  yum install -y nginx
}
test

函数的位置变量

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

函数返回值


[root@m01 ~]# vim 2.sh

#!/bin/bash

# File Name: __2.sh__
# Version: __v1.1__ 
# Author: __Driverwang__ 
# Mail: __2794552827@qq.com__ 
# Blog: __https://blog.driverzeng.com__ 
# DateTime: __2022-07-24 14:45__
name=$1
age=$2
var=$*
echo "函数外 $0"
zls(){
echo $1
echo $2
echo "函数内 $0"
echo $*
echo $#
if [  ];then
    return 190
else
    return 240
fi
}
zls abc xxx

if [ $? -eq 240 ];then
  echo dsb
fi

[root@m01 ~]# sh 2.sh 
函数外 2.sh
abc
xxx
函数内 2.sh
abc xxx
2
dsb

# 函数的返回值
function.sh: line 27: return: ok: numeric argument required
函数返回值只接收,数字类型的参数

function.sh: line 27: return: too many arguments
函数的返回值,只能接收一个参数

作业

#!/bin/bash
cat <<EOF
+---------+
| 1.lnmp |
+---------+
| 2.lnmt |
+---------+
| 3.lamp |
+---------+
| 4.lamt |
+---------+
| 5.nginx |
+---------+
| 6.apache|
+---------+
| 7.tomcat|
+---------+
| 8.php |
+---------+
EOF
根据菜单,安装对应的架构
输入数字和 lnmp nginx

[root@m01 ~]# cat test.sh 
#!/bin/bash

# File Name: __test.sh__
# Version: __v1.1__ 
# Author: __Driverwang__ 
# Mail: __2794552827@qq.com__ 
# Blog: __https://blog.driverzeng.com__ 
# DateTime: __2022-07-24 15:12__

. /etc/init.d/functions

cat <<EOF
+---------+
| 1.lnmp |
+---------+
| 2.lnmt |
+---------+
| 3.lamp |
+---------+
| 4.lamt |
+---------+
| 5.nginx |
+---------+
| 6.apache|
+---------+
| 7.tomcat|
+---------+
| 8.php |
+---------+
EOF

mariadb (){
  yum install -y mariadb-server
}

php (){
  yum -y install php71w php71w-cli php71w-common php71w-devel php71w-embedded php71w-gd php71w-mcrypt php71w-mbstring php71w-pdo php71w-xml php71w-fpm php71w-mysqlnd php71w-opcache php71w-pecl-memcached php71w-pecl-redis php71w-pecl-mongodb
}

apache (){
  yum install -y httpd
}

tomcat (){
  yum install -y tomcat
}

nginx (){
cd /opt/nginx & > /dev/null
if [ -eq 0 ];then
  wegt https://nginx.org/download/nginx-1.20.2.tar.gz
  tar xf nginx-1.20.2.tar.gz
  cd nginx-1.12.2
  ./configure --prefix=/opt/nginx-1.20.2 --with-http_ssl_module --with-http_stub_status_module
  yum install -y pcre-devel openssl-devel gcc gcc-c++ glibczlib-devel
  make && make install
else 
 echo 'nginx 已存在'
fi
}
read -p '请输入您想下载的架构及软件: ' num
if [ ${num} -eq 1 ];then
  nginx
  mariadb
  php
  action '安装lnmp' /bin/true
elif [ ${num} -eq 2 ];then
  nginx
  mariadb
  tomcat
  action '安装lnmt' /bin/true
elif [ ${num} -eq 3 ];then
  apache
  mariadb
  php
  action '安装lamp' /bin/true
elif [ ${num} -eq 4 ];then
  apache
  mariadb
  tomcat
  action '安装lamt' /bin/true
elif [ $num -eq 5 ];then
  nginx
  action '安装nginx' /bin/true
elif [ ${num} -eq 6 ];then
  apache
  action '安装apache' /bin/true

elif [ ${num} -eq 7 ];then
  tomcat
  action '安装tomcat' /bin/true

elif [ ${num} -eq 8 ];then
  php
  action '安装php' /bin/true

else
  echo 'sb'
fi
posted @ 2022-07-24 16:37  Gabydawei  阅读(23)  评论(0编辑  收藏  举报