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}”

  1. start)

if [ -e /var/lock/subsys/testd_name ] ;then

echo “脚服务已启动”

else

touch /var/lock/subsys/testd_name

echo “服务启动成功”

fi

  1. stop)

if [ -e /var/lock/subsys/testd_name ] ;then

rm -f  /var/lock/subsys/testd_name

echo “服务挂关闭成功”

else

echo “服务已关闭”

fi

  1. restart)

【将前面的代码写成函数】

Start

Stop

  1. 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

  1. 函数返回值得问题
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 删除用户以及用户家目录

  1. 函数接收参数

函数 变量

和普通命令一样

只需要注意,在接收参数的时候,不会使用外部的传参,而是以脚本内部的参数为准

  1. 函数的变量

本地变量

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中的

  1. 函数递归

你 站在镜子的前面,后面又有一面镜子

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 函数相关推荐

  1. Linux的shell脚本函数教程

    Linux的shell脚本函数教程 一.shell介绍 二.shell函数的介绍 三.函数的定义 四.shell中函数使用示例 一.shell介绍 二.shell函数的介绍 三.函数的定义 四.she ...

  2. Shell脚本函数(函数传参、递归、创建库)

    Shell脚本函数 一.Shell函数 1.Shell函数定义 2.函数的返回值 return echo 二.函数传参 三.函数变量的作用范围 四.递归 1.阶乘 2.递归目录 五.创建库 一.She ...

  3. linux文件的定义变量的值,linux shell 自定义函数方法(定义、返回值、变量作用域)...

    一.定义shell函数(define function) 语法: [ function ] funname [()] { action; [return int;] } 说明: 1.可以带functi ...

  4. linux shell 自定义函数(定义、返回值、变量作用域)介绍

    linux shell 可以用户定义函数,然后在shell脚本中可以随便调用.下面说说它的定义方法,以及调用需要注意那些事项. 一.定义shell函数(define function) 语法: [ f ...

  5. linux无filelength函数,Linux Shell 自定义函数(定义、返回值、变量作用域)介绍

    定义Shell函数(define function) 语法: [ function ] funname [()] { action; [return int;] } 说明: 可以带function f ...

  6. Shell Curses 函数库

    用于 Shell 脚本的终端函数 "Shell Curses"是一个脚本函数库,这些函数为 Shell 程序员提供了将基于文本的光标移动到屏幕上指定位置的能力.这种能力允许使用 S ...

  7. shell trim函数

    shell trim 函数 trim() {local var="$*"# remove leading whitespace charactersvar="${var# ...

  8. Shell脚本函数应用

    记录:429 场景:Shell脚本函数应用,定义函数,函数调用,函数传参. 版本:CentOS Linux release 7.9.2009. 1.普通函数 示例普通函数是没有入参和返回值. 1.1脚 ...

  9. linux 变量函数返回值,linux shell 自定义函数(定义、返回值、变量作用域)介绍...

    linux shell 可以用户定义函数,然后在shell脚本中可以随便调用.下面说说它的定义方法,以及调用需要注意那些事项. 一.定义shell函数(define function) 语法: [ f ...

  10. shell自定义函数

    转载地址:https://www.cnblogs.com/oxspirt/p/7246075.html "sum=$(fsum 2 5)"这种方式,是将标准输出(echo 出来的东 ...

最新文章

  1. Python3位运算符
  2. 210511阶段四 切片 迭代 生成器
  3. win10远端服务器未响应,win10怎么连远程服务器未响应
  4. AES加密算法256位密钥与128位密钥的不同之处
  5. 从零开始实现数据结构(二) 有序数组
  6. linux邮件收发程序流程图,[源码和文档分享]基于C语言和TCP Socket实现的Linux环境下的邮件收发客户端程序...
  7. simpledateformat_为什么阿里巴巴规定代码中禁用 static 修饰 SimpleDateFormat?
  8. 项目管理应该注意问题
  9. 让Cocos2dx中的TestCPP中的Box2dTest运行起来
  10. DiskFileUpload类别
  11. 基于MediaTek_ApSoC_SDK_4320_20150414 编译mt7621 的uboot
  12. 高德地图经纬度检索校验
  13. mysql rownum写法_mysql类似oracle rownum写法
  14. javascript原生脚本代码 飘浮广告
  15. 前端实习第一周总结(学习上的收获与生活上的收获)
  16. 掌握SQL Monitoring这些特性,SQL优化通通不在话下
  17. 开启snapshot的操作失败 如何解决——两种办法
  18. Arduino Nano 引脚分配图及定义详解
  19. DOS上登陆FTP的命令和步骤(ftp命令全集)
  20. Cadence 工具功能分析

热门文章

  1. Android App自适应draw9patch不失真背景
  2. 如何提高邮件投递能力-提高邮件群发能力的方法
  3. 十个行为把你变成糟糕的程序员
  4. Selenium 反反爬检测方案(利用js隐藏浏览器特征)
  5. 【工具类】页面静态化 --- Freemarker的使用
  6. discuz 二次开发文章
  7. HTML5手机端几秒钟自动跳转
  8. tomcat设置自动监听替换class文件
  9. Linux学习笔记8——VIM编辑器的使用
  10. netcore命令行部署|跨域问题