Shell-06 函数
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}”
- 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 ` ;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 删除用户以及用户家目录
- 函数接收参数
函数 变量
和普通命令一样
只需要注意,在接收参数的时候,不会使用外部的传参,而是以脚本内部的参数为准
- 函数的变量
本地变量
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-)!
(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 函数的更多相关文章
- Linux操作系统shell与函数详解
shell和函数的定义 1. linux shell 函数 将一组命令集或语句形成一个可用的块, 这些语句块称为函数. 2. shell 函数的组成 函数名:函数名字,注意一个脚本中函数名要唯一, ...
- shell 中函数放回字符串问题
shell 中函数放回字符串问题 shell 中不可以直接 return 字符串 ,可以return 数字.如果要return 字符串 改为 echo "hello world" ...
- shell从函数文件里调用函数
碰到一个shell中函数调用的小问题,记录一下. shell中函数有三种调用方式,一种是在文件前面定义函数,然后在以下直接调用:一种是通过加载shell,在shell中直接调用:第三种是将函数写入文件 ...
- linux shell自定义函数(定义、返回值、变量作用域)介绍
http://www.jb51.net/article/33899.htm linux shell自定义函数(定义.返回值.变量作用域)介绍 linux shell 可以用户定义函数,然后在shell ...
- Linux shell 自定义函数
一.定义shell函数(define function) 语法: [ function ] funname [()] { action; [return int;] } 说明: 1.可以带functi ...
- shell脚本--函数
shell的函数和Javacript和php的函数声明一样,只不过shell在调用函数的时候,只需要写函数名就可以调用函数,注意不要在函数名后面加括号 创建并使用函数 #!/bin/bash #文件名 ...
- shell进阶函数
函数的定义和用途 函数function是由若干条shell命令组成的语句块,实现shell代码的重用和模块化编程. 函数和shell程序的异同点 它与shell程序形式上是相似的,不同的是它不是一个单 ...
- shell获取函数的返回值
背景:定义了一个函数,比对本地和线上服务器集群数量差别,想要获取不同集群的个数.shell和其他语言的函数返回值还是差别挺大的. 定义一个函数 functionname(){ 操作内容 ...
- linux shell 自定义函数(定义、返回值、变量作用域)介绍
linux shell 可以用户定义函数,然后在shell脚本中可以随便调用.下面说说它的定义方法,以及调用需要注意那些事项. 一.定义shell函数(define function) 语法: [ f ...
- shell的函数的简单入门
shell的函数的简单入门 语法: function funcname(){} 示例: #!/bin/bash #定义将参数转化为大写的函数 function strToUpper(){ | tr ' ...
随机推荐
- LeetCode.1021-删除最外面的括号(Remove Outermost Parentheses)
这是小川的第380次更新,第408篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第242题(顺位题号是1021).有效的括号字符串为空(""),&qu ...
- typedef interrupt void (*PINT)(void)的分析
今天写程序时,在DSP2833x_PieVect.h看到typedef interrupt void (*PINT)(void)突然一愣,上网查了下发现在这是加了interrupt 中断关键字的函数指 ...
- NOIp D1T1 小凯的疑惑
吐槽 果然让人很疑惑,这道题,对于我这种数学渣渣来说太不友好了,哪里想得到结论,猜也猜不到. 思路一 纯数学,见过的飞快切掉,没见过的就... 结论就是:已知$a,b$为大于$ 1 $的互质的正整数, ...
- 深入理解java:3. NIO 编程
I/O简介 I/O即输入输出,是计算机与外界世界的一个借口. IO操作的实际主题是操作系统. 在Java编程中,一般使用流的方式来处理IO,所有的IO都被视作是单个字节的移动,通过stream对象一次 ...
- 异常1(Exception)
父类 :Throwable(可抛出的) 有两个子类:Error(错误) Exception(异常) Error是所有错误类的父类,Exception是所有异常类的父类. 如图所示: 格式: ...
- Linux下面误删除文件使用extundelete工具恢复介绍
操作系统版本:CentOS release 6.4 (Final) 软件版本:extundelete-0.2.4.tar.bz2 PS:该软件恢复文件系统仅支持ext2/ext3/ext4 ...
- 在子类中,若要调用父类中被覆盖的方法,可以使用super关键字
在子类中,若要调用父类中被覆盖的方法,可以使用super关键字. package text; class Parent { int x; public Parent() { ...
- [BZOJ 4820] [SDOI2017] 硬币游戏(高斯消元+概率论+字符串hash)
[BZOJ 4820] [SDOI2017] 硬币游戏(高斯消元+概率论+字符串hash) 题面 扔很多次硬币后,用H表示正面朝上,用T表示反面朝上,会得到一个硬币序列.比如HTT表示第一次正面朝上, ...
- 掌握 analyze API,一举搞定 Elasticsearch 分词难题
初次接触 Elasticsearch 的同学经常会遇到分词相关的难题,比如如下这些场景: 为什么明明有包含搜索关键词的文档,但结果里面就没有相关文档呢? 我存进去的文档到底被分成哪些词(term)了? ...
- IIS发布出现[Microsoft][ODBC 驱动程序管理器] 在指定的 DSN 中,驱动程序和应用程序之间的体系结构不匹配
一,原因是系统DSN的配置平台位数跟系统的位数不一致(PS:确认你有没有安装对应系统的驱动.本文是34位和64位驱动都安装了) 二,解决方法,我们必须在 <控制面板---管理工具>找到对应 ...