Shell:Day07.笔记
1、函数介绍function
为了避免代码重复使用,我们一般通过函数编写代码块,而这一个代码块用来实现某种功能。
且,这个功能在后面的代码中,会重复调用;
def
函数的写法格式:
function check_cpu {
cat /proc/cpuinfo
}
ls /etc/
check_cpu 【不调用函数,则函数体中的命令是不会执行的;在哪里调用,函数体中的命令就在那里执行】
函数体
$1 $2 ... $10
}
fun_name 1 2 3
:wq
function.sh 4 5 6 7 8 9 10 11 12 13 14
函数返回值
1、当函数中指定了判断语句的时候,我们默认要返回一个错误的结果,但是最近一条命令确实正确的,这时候,我们需要通过return返回一个我们需要的错误状态码;
2、函数结束的时候,我们需要指定一个return的正确返回码;
如果使用在循环语句中,return会跳出循环;
函数 变量
和普通的命令一样
只需要注意,在函数接受参数的时候,不会使用外部的传参,而是以脚本内部的参数为准,
5、函数中的变量
本地变量
local 变量名=xxx
本地变量只在本函数内部生效
局部变量
脚本内部的变量
环境变量
在整个Linux系统的bash中生效
TEST() {
local i=9
let i++
echo i
exit 0
}
i=1
TEST
echo i
bash 的方式来执行 -- #!/bin/bash
bash所执行的脚本中定义的变量,在当前shell的子shell中;
全路径或者相对路径的方式来执行; -- 须有授权执行权限;
source 脚本文件 或者 . 脚本文件
source这种方式来执行脚本的时候,内部变量所定义的值是在当前shell中的;
你 站在镜子前,后面又有一面镜子
n! = n(n-)!
$[$* $[ fac -]] fact(){
if [ $ -lt ];then
echo //一定要写成1
else
i=$[$*$(fact $[$-])] // n(n-1)
echo $i
fi
} (n-) = (n-)(n-)!
。。。
!=*! fac(){
$[fac - ]
}
fac
1 + 1 = 2
1+ 1 + 1 = 3
2 + 1 + 2 = 5
3 + 5 = 8
= n
1 1 2 3 5 8 13 21 34 ... n
Fn = F(n-1) + F(n-2)
#!/bin/bash
#
fab(){
if [ $ -eq ];then
echo
elif [ $ -eq ];then
echo
else
echo $[$(fab $[$-])+$(fab $[$-])]
fi
}
fab
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 …”
i=file.txt
Start() {
if [ -e /root/$i ];then
echo "服务已经启动"
else
touch /root/$i
echo "服务已启动"
fi
}
Stop() {
if [ -e /root/$i ];then
rm -f /root/$i
echo "服务已关闭"
fi
}
Status() {
if [ -e /root/$i ];then
echo "服务已开启"
else
echo "服务已关闭"
fi
}
Usage() {
echo "Usage:{/root/testd.sh start|stop|status|restart}"
}
if [ $# -lt ];then
Usage
exit
fi
case $ in
start)
Start
;;
stop)
Stop
;;
restart)
Stop
Start
;;
status)
Status
;;
*)
Usage
;;
esac
Shell:Day07.笔记的更多相关文章
- Learning The Bash Shell读书笔记(整理)
最近搞了一本书 Learning Bash Shell,发现有人已经写了阅读笔记,我就在这边整理一下 来自blog:http://blog.sina.com.cn/n4mine Learning Th ...
- SHELL学习笔记----IF条件判断,判断条件
SHELL学习笔记----IF条件判断,判断条件 前言: 无论什么编程语言都离不开条件判断.SHELL也不例外. if list then do something here ...
- Shell编程笔记
Shell编程笔记与Windows下熟悉的批处理类似,也可以将一些重复性的命令操作写成一个脚本方便处理. 修改别人的脚本,运行后遇到个问题 setenv: command not found 查证 ...
- shell学习笔记
shell学习笔记 .查看/etc/shells,看看有几个可用的Shell . 曾经用过的命令存在.bash_history中,但是~/.bash_history记录的是前一次登录前记录的所有指令, ...
- 菜鸟教程之学习Shell script笔记(上)
菜鸟教程之学习Shell script笔记 以下内容是,学习菜鸟shell教程整理的笔记 菜鸟教程之shell教程:http://www.runoob.com/linux/linux-shell.ht ...
- python day07笔记总结
2019.4.4 S21 day07笔记总结 一.深浅拷贝 1.copy.copy() 浅拷贝 deep.copy() 深拷贝 2.一般情况 1.str/int/bool 是不可变类型 ...
- [转帖][Bash Shell] Shell学习笔记
[Bash Shell] Shell学习笔记 http://www.cnblogs.com/maybe2030/p/5022595.html 阅读目录 编译型语言 解释型语言 5.1 作为可执行程序 ...
- shell学习笔记汇总
1.shell脚本中函数使用 函数定义在前,调用在后,顺序反了就没有效果了.函数调用为:函数名 参数列表 函数内部通过以下变量访问函数的参数:shell脚本函数中: $0: 这个脚本的名字 $n: 这 ...
- shell 学习笔记2-shell-test
一.字符串测试表达式 前面一篇介绍:什么是shell,shell变量请参考: shell 学习笔记1-什么是shell,shell变量 1.字符串测试表达式参数 字符串需要用""引 ...
随机推荐
- scrapy pip中间件个人处理
import pymongo from scrapy.conf import settings import pymysql class Mongodb_Pipeline(object): def _ ...
- eclipse代码提示完善
转载请注明出处:https://www.cnblogs.com/Higurashi-kagome/p/12263267.html 1.参考https://blog.csdn.net/ithomer/a ...
- ASP.NET MVC5实现芒果分销后台管理系统(一):系统结构设计,集成AutoMapper,Log4net
在构思完系统思维脑图后,小墨回到家中,便摩拳擦掌开始了开发工作.要想迅速完成系统开发,前期系统设计和准备尤其重要,因为小墨做过太多大大小小的业务系统,准备工作也是十分顺利. 系统结构 整个系统工程结构 ...
- ExifPro Mod 3.0 64位绿色中文版
EXIFPro 是一个优秀的图像查看, 处理及管理工具, 使用 VC++ 开发, 小巧快速, 支持查看丰富的 EXIF 信息, 非常适用于查看您的 RAW 数字照片和其他常规图像.EXIFPro V1 ...
- 《Python学习手册 第五版》 -第18章 参数
在函数的定义和调用中,参数是使用最多喝最频繁的,本章内容就是围绕函数的参数进行讲解 本章重点内容如下: 1.参数的传递 1)不可变得参数传递 2)可变得参数传递 2.参数的匹配模式 1)位置次序:从左 ...
- 大数据软件安装之Azkaban(任务调度)
一.安装部署 1.安装前准备 1)下载地址:http://azkaban.github.io/downloads.html 2)将Azkaban Web服务器.Azkaban执行服务器.Azkaban ...
- Systematic comparison of strategies for the enrichment of lysosomes by data independent acquisition 通过DIA技术系统比较各溶酶体富集策略 (解读人:王欣然)
文献名:Systematic comparison of strategies for the enrichment of lysosomes by data independent acquisit ...
- 深夜,我用python爬取了整个斗图网站,不服来斗
QQ.微信斗图总是斗不过,索性直接来爬斗图网,我有整个网站的图,不服来斗. 废话不多说,选取的网站为斗图啦,我们先简单来看一下网站的结构 网页信息 从上面这张图我们可以看出,一页有多套图,这个时候我们 ...
- 环境篇:Docker
环境篇:Docker www.docker.com Docker 是什么? Docker 是一个开源的应用容器引擎,基于Go语言并遵从Apache协议的开源,让开发者可以打包他们的应用以及依赖包到一个 ...
- 为什么我推荐你用Ubuntu开发?
前言: 鱼哥在做多媒体开发时,领导倒逼我们用Ubuntu开发,后来才发现它的牛逼和高效.所以对于还在用Windows上开发的朋友,鱼哥建议,趁周末,搞个双系统,切到Ubuntu上开发, Ubuntu最 ...