文档章节

shell脚本之函数

o
 osc_g8254g7s
发布于 2019/08/19 17:24
字数 980
阅读 13
收藏 0

精选30+云产品,助力企业轻松上云!>>>

函数:
1、函数介绍:
为了避免函数代码重复使用,我们一般通过函数编写代码块,而这一个代码块用来实现某种功能
并且,这个功能在后面的代码中,会重复调用。
2、函数的格式:
function fun_name{
函数体
}
check_CPU 【不调用函数,则函数体中的命令不会执行;在哪里调用,函数体中的命令就在那里执行】
fun_name(){
函数体
$1$2$3$4$5
}
fun_name 1 2 33
3、函数的调用
函数的返回值
1、当函数中指定了判断语句的时候,我们默认要返回一个错误的结果,但是最近一条命令确实正确的,这时候,我们需要通过return返回一个我们需要的状态码
2、函数结束的时候,我们需要指定一个return的1正确返回码
如果使用在循环语句中,return会跳出循环;
4、函数接受参数
函数 变量
和普通命令一样
只需要注意,函数接受参数的时候,不会使用外部的参数,而是以脚本内部的参数为准。
5、函数中的变量
本地变量
local变量名=XXX
本地变量只在本地函数内部生效
局部变量
脚本内部的变量
环境变量
在整个Linux系统的bash中生效

i=1

TEST(){
local i=9
let i++
echo i
exit 0
}

拓展:关于脚本执行的问题
bash的方式来执行----#!/bin/bash
全路径或者相对路径的方式来执行;----必须有授权执行权限;
source 脚本文件 或者 .脚本文件
source 这种方式来执行脚本的时候,内部变量所定义的值是在当前shell中的;/


6、函数递归
你 站在镜子前,后面又有一面镜子

兔子数列,斐波那契数列

1 #!/bin/bash
2 # Author: wangshilin
3 # Blog: https://home.cnblogs.com/wangshilin/
4 # Time: 2019-08-19 23:44:43
5
6 f[0]=1
7 f[1]=1
8 for((i=2;i<10;i=i+1))
9 do
10 f[i]=$((f[i-1]+f[i-2]))
11 done
12
13 for((j=0;j<10;j=j+1))
14 do
15 echo -e ${f[j]}" \c"
16 if test $(((j+1)%2)) = 0
17 then
18 echo -e ""
19 fi
20 done

练习
1、脚本可以接受参数:start stop restart status
case 参数 in
start)
stop)
restart)
status)
*)
【case PAT支持的格式:* 任意内容 start|stop) a*) (case语句中的PAT是支持文件通配的) 】
2、如果参数非此四者之一,提示使用个时候报错退出;
*)
echo "Usage:please input {start|stop|restart|status}"
3、如果是start:则创建 /var/lock/subsys/SCRIPT_NAME,并显示“启动成功”【考虑:如果事先已经启动过一次,该如何处理?】
start)
if [ -e /var/lock/subsys/testd_name ];then
echo "服务已启动"
else
touch /var/lock/subsys/testd_name
echo "服务启动成功"
fi
4、如果是stop:则删除/var/lock/subsys/SCRIPT_NAME,并显示“停止完成”;【考虑:如果事先已经停止过了,该如何处理?】
stop)
if [ -e /var/lock/subsys/testd_name ];then
rm -f /var/lock/subsys/testd_name
echo "服务关闭成功"
else
echo "服务已经关闭"
fi
5、如果restart,则先stop,再start;【考虑:如果本来没有start,如何出列?】
restart)
【将前面的代码写成函数】
start
stop
6、如果是status,则
如果/var/lock/subsys/SCRIPT_NAME文件存在,则显示“SCRIPT_NAME is running…”
如果/var/lock/subsys/SCRIPT_NAME文件不存在,则显示“SCRIPT_NAME is stopped …”

1 #!/bin/bash
2 # Author: wangshilin
3 # Blog: https://home.cnblogs.com/wangshilin/
4 # Time: 2019-08-19 18:51:07
5 i=file.txt
6 Start(){
7 if [ -e /root/$i ]; then
8 echo" running"
9 else
10 touch /root/$i
11 echo "Running"
12 fi
13 }
14 Stop (){
15 if [ -e /root/$i ]; then
16 rm -f /root/$i
17 echo "stop"
18 fi
19 }
20 Status(){
21 if [ -e /root/$i ]; then
22 echo "running"
23 else
24 echo "stop"
25 fi
26 }
27 Ugage(){
28 echo "Ugage /root/li2.sh {start|stop|restart|status}"
29
30 }
31 case $1 in
32 start)
33 Start
34 ;;
35 stop)
36 Stop
37 ;;
38 restart)
39 Stop
40 Start
41 ;;
42 status)
43 Status
44 ;;
45 *)
46 Ugage
47 ;;
48 esac

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
Shell编程

在Linux系统中,Shell是一个非常灵活的工具。Shell不仅能够执行命令,而且是一门非常优秀的编程语言。 一、Shell编程基础 通过使用Shell编程可以使大量的任务自动化,Shell程序特别擅长系统管...

许晴125
2017/12/20
0
0
shell 函数

function 函数 1.什么是函数 函数也是具有和别名类似的功能: 简单地说,函数的作用就是把程序里多次调用相同的代码部分定义成一份,然后为这一份代码起个名字,其他所有的重复调用这部分代码...

jy1779
2018/07/03
0
0
Shell基础入门

目录 Shell基础入门 Shell基础入门 1、什么是Shell? Shell是一个命令解释器,它的作用是解释执行用户输入的命令及程序,用户每输入一条命令,Shell就解释执行一条。Shell存在于操作系统的最...

烟雨浮华
2019/03/08
0
0
终极 shell 脚本 快速入门指南 (六) 函数

本文分享自微信公众号 - 白玉无冰(lamyoung-com)。 如有侵权,请联系 support@oschina.cn 删除。 本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。...

白玉无冰
2019/10/17
0
0
Shell脚本学习三

【shell脚本中的循环】 Shell脚本中也算是一门简易的编程语言了,当然循环是不能缺少的。常用到的循环有 for循环和while循环。下面就分别介绍一下两种循环的结构。 脚本中的seq15表示从1到5...

天行健J
2012/12/04
72
0

没有更多内容

加载失败,请刷新页面

加载更多

Eclipse_JavaEE_Tomcat_MySQL环境配置

安装java环境,配置系统变量(JAVA_HOME,绝对路径) 下载eclipse+Tomcat+mysql window——》preference——》server——》runtime——》tomcat环境 项目右键build path 配mysql jar ,libra...

愿有时光可回首
58分钟前
20
0
MySQL原理 - InnoDB引擎 - 行记录存储 - Redundant行格式

本文基于 MySQL 8 在上一篇:MySQL原理 - InnoDB引擎 - 行记录存储 - Compact格式 中,我们介绍了什么是 InnoDB 行记录存储以及 Compact 行格式,在这一篇中,我们继续介绍其他三种行格式。 ...

zhxhash
今天
29
0
leetcode面试题 17.13(恢复空格)--Java语言实现

求: 哦,不!你不小心把一个长篇文章中的空格、标点都删掉了,并且大写也弄成了小写。像句子"I reset the computer. It still didn’t boot!"已经变成了"iresetthecomputeritstilldidntboo...

拓拔北海
今天
19
0
B站跨年晚会究竟做对了什么?

燃财经(ID:rancaijing)原创 作者 | 赵磊 编辑 | 周昶帆 “补课”是《bilibili晚会 二零一九最美的夜》这个视频中,观众在前两分钟刷得最多的弹幕,寓意着观众是在元旦之后回来补看跨年晚会...

子乾建建_Jeff
01/07
59
0
关于Scrapy爬虫项目运行和调试的小技巧(上篇)

点击上方“Python爬虫与数据挖掘”,进行关注 回复“书籍”即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 迟日江山丽,春风花草香。泥融飞燕子,沙暖睡鸳鸯。 扫除运行Scrapy爬虫程序...

yuhan336
04/02
26
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部