Shell-06 函数
Shell-06 函数
#编写脚本,使用chkconfig命令,循环执行,关闭所有5级别服务
#!/bin/bash name=`chkconfig --list | cut -d' ' -f1`for i in [name];dochkconfig --level 5 $i offdonename=`chkconfig --list | awk '{print $1}'`for i in $name;doif chkconfig --list $i | grep "5:off" &> /dev/null;thenecho "这个$i服务已经关闭"elsechkconfig --level 5 $i offecho "这个$i服务已经关闭"fidone
1.函数介绍
为了避免代码的重复使用,我们一般通过函数编写代码块,而这个代码块用来实现某种功能。且这个功能在后面得代码中,会重复调用;
Def
2.函数的格式
function
格式1:
Function fun_name{
函数体
}
Fun_name()
【不调用函数,则函数体中的命令是不会被执行的;在哪里调用,函数体中的命令就在那里执行】
格式2:
Fun_name(){
函数体
$1 $2…$10
}
Fun_name 1 2 3
:wq
Fun_name 4 5 6 7 8 9 10 11 12 13 14
1.Case PATTERN支持的格式:* 任意内容start|stop) a*)
Case语句中的pattern支持文件通配符的
2.*)
Echo “Usage:please input{start|stop|restart|status}”
- start)
if [ -e /var/lock/subsys/testd_name ] ;then
echo “脚服务已启动”
else
touch /var/lock/subsys/testd_name
echo “服务启动成功”
fi
- stop)
if [ -e /var/lock/subsys/testd_name ] ;then
rm -f /var/lock/subsys/testd_name
echo “服务挂关闭成功”
else
echo “服务已关闭”
fi
- restart)
【将前面的代码写成函数】
Start
Stop
- status
fun_start(){
if [ -e /var/lock/subsys/testd_name ];then
echo "服务已启动"
else
touch /var/lock/subsys/testd_name
echo "服务启动成功"
fi
}
fun_stop(){
if [ -e /var/lock/subsys/testd_name ];then
rm -f /var/lock/subsys/testd_name
echo "服务关闭成功"
else
echo "服务已关闭"
fi
}
fun_restart(){
fun_stop
fun_start
}
fun_status(){
if [ -e /var/lock/subsys/testd_name ];then
echo "testd_name is running"
else
echo "testd_name is stopped"
fi
}
fun_usage(){
echo "Usage: please input{start|stop|restart|status}"
}
if [ $# -lt 1 ];then
Usage
exit 1
fi
case $1 in
start)
fun_start
;;
stop)
fun_stop
;;
reatart)
fun_restart
;;
status)
fun_status
;;
*)
fun_usage
;;
esac
- 函数返回值得问题
useradd_1(){for i in `seq 1 10` ;doif id user$i &> /dev/null;thenecho “user$i 存在”elseuseradd user$i &> /dev/nullecho “user$i OK”return 0fidone}useradd_1
a) 当函数中指定了判断语句时,默认要返回一个错误结果,但是最近一条命令确实正确的,需要通过return来返回我们需要的正确的状态码。
b) 函数结束的时候,我们需要指定一个return的正确返回码;
如果使用循环语句时,return会跳出循环
Userdel -r 删除用户以及用户家目录
- 函数接收参数
函数 变量
和普通命令一样
只需要注意,在接收参数的时候,不会使用外部的传参,而是以脚本内部的参数为准
- 函数的变量
本地变量
Local 变量名=xxx
本地变量只在本函数的内部生效
局部变量
脚本内部的变量
环境变量
在整个Linux系统的bash中生效
i=1
TEST(){
Local i=9
Let i++
Echo i
Exit 0
}
TEST
Echo i
扩展:关于脚本执行的问题
a) bash的方式来执行
bash所执行的脚本中定义的变量,在当前shell的子shell中
b) 通过全路径或者相对路径的方式来执行-------#!/bin/bash 需要授权执行权限;
c) Source脚本文件或者.脚本文件
Source这种方式来执行脚本的时候,内部变量所定义的值是在当前的shell中的
- 函数递归
你 站在镜子的前面,后面又有一面镜子
n的阶乘n!=n*(n-1)!(n-1)!=(n-1)*(n-2)!fun(){if [ $1 -le 1 ];thenecho 1elseq=$[$1*$(fun$[$1-1])]echo $qfi}fun 5
兔子数列,斐波那契数列
1+1=2 1+2=3 2+3=5 3+5=8
1 1 2 3 5 8 13 21 34….
Fn = F(n-1)+F(n-2)
转载于:https://www.cnblogs.com/KAJIA1/p/11392371.html
Shell-06 函数相关推荐
- Linux的shell脚本函数教程
Linux的shell脚本函数教程 一.shell介绍 二.shell函数的介绍 三.函数的定义 四.shell中函数使用示例 一.shell介绍 二.shell函数的介绍 三.函数的定义 四.she ...
- Shell脚本函数(函数传参、递归、创建库)
Shell脚本函数 一.Shell函数 1.Shell函数定义 2.函数的返回值 return echo 二.函数传参 三.函数变量的作用范围 四.递归 1.阶乘 2.递归目录 五.创建库 一.She ...
- linux文件的定义变量的值,linux shell 自定义函数方法(定义、返回值、变量作用域)...
一.定义shell函数(define function) 语法: [ function ] funname [()] { action; [return int;] } 说明: 1.可以带functi ...
- linux shell 自定义函数(定义、返回值、变量作用域)介绍
linux shell 可以用户定义函数,然后在shell脚本中可以随便调用.下面说说它的定义方法,以及调用需要注意那些事项. 一.定义shell函数(define function) 语法: [ f ...
- linux无filelength函数,Linux Shell 自定义函数(定义、返回值、变量作用域)介绍
定义Shell函数(define function) 语法: [ function ] funname [()] { action; [return int;] } 说明: 可以带function f ...
- Shell Curses 函数库
用于 Shell 脚本的终端函数 "Shell Curses"是一个脚本函数库,这些函数为 Shell 程序员提供了将基于文本的光标移动到屏幕上指定位置的能力.这种能力允许使用 S ...
- shell trim函数
shell trim 函数 trim() {local var="$*"# remove leading whitespace charactersvar="${var# ...
- Shell脚本函数应用
记录:429 场景:Shell脚本函数应用,定义函数,函数调用,函数传参. 版本:CentOS Linux release 7.9.2009. 1.普通函数 示例普通函数是没有入参和返回值. 1.1脚 ...
- linux 变量函数返回值,linux shell 自定义函数(定义、返回值、变量作用域)介绍...
linux shell 可以用户定义函数,然后在shell脚本中可以随便调用.下面说说它的定义方法,以及调用需要注意那些事项. 一.定义shell函数(define function) 语法: [ f ...
- shell自定义函数
转载地址:https://www.cnblogs.com/oxspirt/p/7246075.html "sum=$(fsum 2 5)"这种方式,是将标准输出(echo 出来的东 ...
最新文章
- Python3位运算符
- 210511阶段四 切片 迭代 生成器
- win10远端服务器未响应,win10怎么连远程服务器未响应
- AES加密算法256位密钥与128位密钥的不同之处
- 从零开始实现数据结构(二) 有序数组
- linux邮件收发程序流程图,[源码和文档分享]基于C语言和TCP Socket实现的Linux环境下的邮件收发客户端程序...
- simpledateformat_为什么阿里巴巴规定代码中禁用 static 修饰 SimpleDateFormat?
- 项目管理应该注意问题
- 让Cocos2dx中的TestCPP中的Box2dTest运行起来
- DiskFileUpload类别
- 基于MediaTek_ApSoC_SDK_4320_20150414 编译mt7621 的uboot
- 高德地图经纬度检索校验
- mysql rownum写法_mysql类似oracle rownum写法
- javascript原生脚本代码 飘浮广告
- 前端实习第一周总结(学习上的收获与生活上的收获)
- 掌握SQL Monitoring这些特性,SQL优化通通不在话下
- 开启snapshot的操作失败 如何解决——两种办法
- Arduino Nano 引脚分配图及定义详解
- DOS上登陆FTP的命令和步骤(ftp命令全集)
- Cadence 工具功能分析