shell函数

muqing

   shell脚本中的代码是按照执行的优先级的顺序从上往下抒写的,代码量越大,在脚本调试的时候就越难排错,当因执行需要调整代码执行顺序的时候就需要不断的复制粘贴,或者删除部分代码来完成,这和从写一个脚本花费的时候相比甚至需要更长的时间。

代码量大后遇到的问题:

单个脚本代码量大 (300-500行)
阅读修改耗时费力
排错困难
改变执行顺序困难
为了解决这些问题,我们可以把代码模块化,按需调用。

一、函数

1.1、函数介绍

shell中允许将一组命令集合或语句形成一段可用代码,这些代码块称为shell函数。给这段代码起个名字称为函数名,后续可以直接调用该段代码的功能。

将完成一个功能的一段代码进行命名、封装

函数的优点:

代码模块化,调用方便,节省内存

代码模块化,代码量少,排错简单

代码模块化,可以改变代码的执行顺序

1.2、函数定义

语法一:
函数名 () {
代码块
return N
}

语法二:
function 函数名 {
代码块
return N
}

函数中return说明:
1.return可以结束一个函数,类似于前面讲的循环控制语句break(结束当前循环,执行循环体后面的代码)
2.return默认返回函数中最后一个命令的退出状态,也可以给定参数值,该参数值的范围是0-256之间。
3.如果没有return命令,函数将返回最后一个Shell的退出值。
1.3、函数调用

当前命令行调用
[root@muqing shell04]# cat fun1.sh

!/bin/bash

hello(){
echo “hello muqing $1”
hostname
}
menu(){
cat <<-EOF

  1. mysql
  2. web
  3. app
  4. exit
    EOF
    }
    [root@muqing shell04]# source fun1.sh
    [root@muqing shell04]# . fun1.sh
    [root@muqing shell04]# hello 888
    hello muqing 888
    MissHou.muqing.cc
    [root@muqing shell04]# menu
  5. mysql
  6. web
  7. app
  8. exit
    定义到用户的环境变量中
    /etc/profile /etc/bashrc ~/.bash_profile ~/.bashrc
    [root@muqing shell04]# cat ~/.bashrc

.bashrc

User specific aliases and functions

alias rm=’rm -i’
alias cp=’cp -i’
alias mv=’mv -i’

Source global definitions

if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
hello(){
echo “hello muqing $1”
hostname
}
menu(){
cat <<-EOF

  1. mysql
  2. web
  3. app
  4. exit
    EOF
    }
    注意:
    当用户打开bash的时候会读取该文件
    脚本中调用

!/bin/bash

打印菜单

source ./fun1.sh
menu(){
cat <<-END
h 显示命令帮助
f 显示磁盘分区
d 显示磁盘挂载
m 查看内存使用
u 查看系统负载
q 退出程序
END
}
menu //调用函数

声明:文中观点不代表本站立场。本文传送门:https://eyangzhen.com/419094.html

联系我们
联系我们
分享本页
返回顶部