Shell-06 函数

#编写脚本,使用chkconfig命令,循环执行,关闭所有5级别服务

#!/bin/bash
name=`chkconfig --list | cut -d' ' -f1` for i in [name];do chkconfig --level $i off done name=`chkconfig --list | awk '{print $1}'` for i in $name;do if chkconfig --list $i | grep "5:off" &> /dev/null;then echo "这个$i服务已经关闭" else chkconfig --level $i off echo "这个$i服务已经关闭" fi done

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  ` ;do

              if id user$i &> /dev/null;then

                     echo “user$i 存在”

              else

                     useradd user$i &> /dev/null

                     echo “user$i OK”

                     return 

              fi

       done

}

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-)!

        (n-)!=(n-)*(n-)!

        fun(){

               if  [ $ -le  ];then

                      echo 

               else

                      q=$[$*$(fun$[$-])]

                      echo $q

               fi

}

fun 

兔子数列,斐波那契数列

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)

Shell-06 函数的更多相关文章

  1. Linux操作系统shell与函数详解

    shell和函数的定义 1. linux  shell 函数 将一组命令集或语句形成一个可用的块, 这些语句块称为函数. 2. shell  函数的组成 函数名:函数名字,注意一个脚本中函数名要唯一, ...

  2. shell 中函数放回字符串问题

    shell 中函数放回字符串问题 shell 中不可以直接 return 字符串 ,可以return 数字.如果要return 字符串 改为 echo "hello world" ...

  3. shell从函数文件里调用函数

    碰到一个shell中函数调用的小问题,记录一下. shell中函数有三种调用方式,一种是在文件前面定义函数,然后在以下直接调用:一种是通过加载shell,在shell中直接调用:第三种是将函数写入文件 ...

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

    http://www.jb51.net/article/33899.htm linux shell自定义函数(定义.返回值.变量作用域)介绍 linux shell 可以用户定义函数,然后在shell ...

  5. Linux shell 自定义函数

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

  6. shell脚本--函数

    shell的函数和Javacript和php的函数声明一样,只不过shell在调用函数的时候,只需要写函数名就可以调用函数,注意不要在函数名后面加括号 创建并使用函数 #!/bin/bash #文件名 ...

  7. shell进阶函数

    函数的定义和用途 函数function是由若干条shell命令组成的语句块,实现shell代码的重用和模块化编程. 函数和shell程序的异同点 它与shell程序形式上是相似的,不同的是它不是一个单 ...

  8. shell获取函数的返回值

    背景:定义了一个函数,比对本地和线上服务器集群数量差别,想要获取不同集群的个数.shell和其他语言的函数返回值还是差别挺大的.   定义一个函数 functionname(){      操作内容 ...

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

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

  10. shell的函数的简单入门

    shell的函数的简单入门 语法: function funcname(){} 示例: #!/bin/bash #定义将参数转化为大写的函数 function strToUpper(){ | tr ' ...

随机推荐

  1. 【神经网络与深度学习】【Qt开发】【VS开发】从caffe-windows-visual studio2013到Qt5.7使用caffemodel进行分类的移植过程

    [神经网络与深度学习][CUDA开发][VS开发]Caffe+VS2013+CUDA7.5+cuDNN配置成功后的第一次训练过程记录<二> 标签:[神经网络与深度学习] [CUDA开发] ...

  2. 【VS开发】【智能语音处理】语音信号处理之(一)动态时间规整(DTW)

    语音信号处理之(一)动态时间规整(DTW) zouxy09@qq.com http://blog.csdn.net/zouxy09 这学期有<语音信号处理>这门课,快考试了,所以也要了解了 ...

  3. 10大IT社区

    技术社区导航 http://tooool.org/ 1. cnblogs 人多内容质量最高 2.csdn csdn的注册人数多,但新手多 3.java eye java eye注册用户刚突破10万,但 ...

  4. idea工具

    1. 使用IntelliJ IDEA 配置JDK(入门)   https://blog.csdn.net/nobb111/article/details/77116259 2. idea 调试快捷键  ...

  5. dp常见优化方法

    noip范围内的dp优化方法: 加速状态转移 1.前缀和优化 2.单调队列优化 3.线段树或树状数组优化 精简状态 3:精简状态往往是通过对题目本身性质的分析,去省掉一些冗余的状态.相对以上三条套路性 ...

  6. Forsaken喜欢数论

    链接:https://ac.nowcoder.com/acm/contest/1221/A来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 524288K,其他语言1048 ...

  7. 软考题型—PERT图(项目计划评审技术)

    经历过软件危机和大量软件项目的失败,人们对软件工程产业现状进行分析后,得出普遍性结论便是:软件项目成功率低的原因很可能就是项目管理能力太弱.由于软件本身的特殊性和复杂性,将项目管理思想引入软件工程领域 ...

  8. C语言中将二维数组作为函数参数来传递

    c语言中经常需要通过函数传递二维数组,有三种方法可以实现,如下: 方法一, 形参给出第二维的长度. 例如: #include <stdio.h> void func(int n, char ...

  9. filebeat开启自带模块收集日志如何辨别日志来源等

    filebeat启动自带模块后,日志先输出到Redis中 比如开启了system模块日志和redis模块日志 在Redis中查看收集过来的日志时,可以看到如下的这些信息 system日志信息 { &q ...

  10. Chrome之谷歌插件开发

    最近碰到一个需求,需要在某个平台上批量的添加好友,如果是人工点击,可以操作,但是效率并不高,人工成本较高.就打算使用浏览器插件的方式来完成这件重复性的工作. 介绍: Chrome插件的本质就是一个由  ...