shll脚本格式和规则


脚本文件必须已 .sh 结尾(yuan.sh)

脚本第一行必须是:#!/bin/bash

激活脚本的二种方式(sh yuan.sh)(给脚本X权限,以绝对路径执行脚本)

逻辑与&&前面执行成功后执行后面,如果前面执行不成功则取消 逻辑或|| 前面命令执行失败后,继续执行||后面的命令 ``优先执行反引号里的命令动作

逻辑语判断是文件还是目录

[root@Server yuan]# ls
aaa yunjisuan
[root@Server yuan]# [ -d yunjisuan ] #判断目录
[root@Server yuan]# echo $?
0
[root@Server yuan]# [ -d aaa ] #判断文件
[root@Server yuan]# echo $?
1
[root@Server yuan]# [ -f aaa ]
[root@Server yuan]# echo $?
0

逻辑语判断是大于还是小于

(-gt:大于) (-lt:小于) (-eq:等于)

(-le:小于等于)(-ne:不等于)(-ge:大于等于)

read交互模式

例如:

#!/bin/bash
read -p "请输入你的成绩:" b #设置一变量带入脚本
[ $b -lt 60 ] && echo "不及格"
[ $b -eq 60 ] && echo "恰好及格"
[ $b -ge 60 ] && [ $b -lt 70 ] && echo "良"
[ $b -ge 70 ] && [ $b -lt 85 ] && echo "良好"
[ $b -gt 85 ] && [ $b -le 100 ] && echo "优秀"
[ $b -gt 100 ] && echo "作弊高手" [root@Server ~]# sh yunjisuan.sh # 执行脚本
请输入你的成绩:60
bu'ji'ge

脚本传参格式

[root@Server ~]# vim yunjisuan.sh
#!/bin/bash
echo $#
echo $*
echo $0
echo $1
echo $2
echo $3
echo $4
[root@Server ~]# /root/yunjisuan.sh 1111 2222 #执行脚本
2
1111 2222
/root/yunjisuan.sh
1111
2222
  • $# 传参数的参数总个数

  • $ 横向罗列穿入的参数*

  • $0 文件的绝对路径

  • $1对应传入的不同的参数

  • $n对应传入的不同的参数

判断字符串个数和是否为空 echo ${#变量}

[root@Server ~]# xx=""
[root@Server ~]# echo ${#xx}
0
[root@Server ~]# xx="22"
[root@Server ~]# echo ${#xx}
2
[root@Server ~]# xx="22222"
[root@Server ~]# echo ${#xx}
5

文本交互式插入内容

[root@Server ~]# cat >yuan <<CFY
> 写入内容
> 写入内容
> 写入内容
>CFY
[root@Server ~]# 命令说明:
>yuan 文件名字
<<CFY 结束语

脚本if条件判断

条件单分支判断:如果条件1成功那么执行动作1,否则执行动作2

#!/bin/bash
read -p "请输入一个数字" x if [ $x == 60 ];then
echo "猜对了"
else
echo "猜错了"
fi
[root@Server ~]# sh yunjisuan.sh # 执行脚本
请输入一个数字40
猜错了
[root@Server ~]#

多分支判断:如果条件1成立;那么执行动作1,否则如果条件2成立;执行动作2,否则条件1和2都不成立一律执行动作3

多个条件时加 elif

#!/bin/bash
read -p "请输入一个数字" x if [ $x == 60 ];then
echo "猜对了"
elif [ $x -lt 60 ];then
echo "猜小了"
else
echo "猜大了"
fi
[root@Server ~]# sh yunjisuan.sh # 执行脚本
请输入一个数字:60
猜对了
[root@Server ~]#

脚本for循环

#!/bin/bash
for a in 1 2 3 4 5
do
echo $a全部都是数字
done
[root@Server ~]# sh yunjisuan.sh # 执行脚本
1全部都是数字
2全部都是数字
3全部都是数字
4全部都是数字
5全部都是数字

C语言的for循环

h=0
for b in {1..6}
do
echo $h
((h++)) # 或者 let h++
done
[root@Server ~]# sh yunjisuan.sh
0
1
2
3
4
5
6
[root@Server ~]# 命令说明:
let h++
不进行++的话,变量只会执行一次,++以后就会以此往上加

脚本while无限循环

read -p "随便输入一个数字:" h
while [ $h -gt 0 ]
do
echo $h
let h++
done [root@Server ~]# sh yunjisuan.sh # 执行脚本
随便输入一个数字:5
.....无限循环......
56443
53467
55667
.....无限循环......
[root@Server ~]#

case 语句格式

一般用于菜单选择,用于没有优先级的场合

#!/bin/bash
case $h in
start)
echo "服务启动"
;;
stop)
echo "服务停止"
;;
restart)
echo "服务准备停止"
echo "服务开始启动"
;;
*)
echo "输入错误"
;;
esac [root@Server ~]# /root/yunjisuan.sh start # 绝对路径执行
服务启动
[root@Server ~]# /root/yunjisuan.sh stop
服务停止
[root@Server ~]# /root/yunjisuan.sh restart
服务准备停止
服务开始启动

在脚本中引用一个函数库

#!/bin/bash

. /etc/init.d/functions

case $h in
start)
action "服务启动" /bin/true
;;
stop)
action "服务停止" /bin/false
;;
restart)
action "服务准备停止" /bin/true
action "服务开始启动" /bin/false
;;
*)
action "输入错误"
;;
esac [root@Server ~]# /root/yunjisuan.sh start # 绝对路径执行
服务启动 [ OK ]
[root@Server ~]# /root/yunjisuan.sh stop
服务停止 [FAILED]
[root@Server ~]# /root/yunjisuan.sh restart
服务准备停止 [ OK ]
服务开始启动 [FAILED]
[root@Server ~]#

把脚本加入到chkconfig里进行管理

[root@Server ~]# cp /root/yunjisuan.sh /etc/init.d/
[root@Server ~]# vim /etc/init.d/yunjisuan.sh
#!/bin/bash
#chkconfig: 35 90 10
......一下忽略..... [root@Server ~]# chkconfig --add yunjisuan.sh
[root@Server ~]# chkconfig --list yunjisuan.sh
.....省略.....

函数的格式用法

#!/bin/bash

function CFY(){
echo "吃饭"
echo "上班"
echo "睡觉"
echo "111111111"
} CFY
CFY [root@Server ~]# sh yunjisuan.sh # 执行脚本
吃饭
上班
睡觉
111111111
吃放
上班
睡觉
111111111

脚本4种循环控制语句

  • exit 强行终止脚本
#!/bin/bash
h=0
while [ $h -lt 20 ]
do
if [ $h -eq 5 ];then
exit
fi
echo $h
let ++
done echo "脚本继续执行" [root@Server ~]# sh yunjisuan.sh # 执行脚本
0
1
2
3
4
5
  • break 退出当前最近的循环
#!/bin/bash
h=0
while [ $h -lt 20 ]
do
if [ $h -eq 5 ];then
break
fi
echo $h
let ++
done echo "脚本继续执行" [root@Server ~]# sh yunjisuan.sh # 执行脚本
0
1
2
3
4
5
脚本继续执行
  • continue 终止当前本次循环进入下次循环
#!/bin/bash
h=0
while [ $h -lt 20 ]
do
let $h++
if [ $h -eq 5 ];then
continue
fi
echo $h
done echo "脚本继续执行" [root@Server ~]# sh yunjisuan.sh # 执行脚本
0
1
...忽略...
19
20
脚本继续执行
  • return 强行跳出函数体系从哪开始到那继续

shll脚本常用格式和规则使用的更多相关文章

  1. C#常用的命名规则汇总

    C#常用的命名规则汇总 来源 https://www.cnblogs.com/pengyouqiang88/p/5021128.html 本文转载自脚本之家 本文详细汇总了C#常用的命名规则.分享给大 ...

  2. 常用的acl规则

    一.常用的acl规则        haproxy的ACL用于实现基于请求报文的首部.响应报文的内容或其它的环境状态信息来做出转发决策,这大大增强了其配置弹性.其配置法则通常分为两步,首先去定义ACL ...

  3. Struts2 验证框架 validation.xml 常用的验证规则

    validation.xml 的命名规则和放置路径: 文件名:<ActionClassName>-validation.xml <ActionClassName>就是要验证的A ...

  4. SCI/EI期刊投稿 Reply Letter 常用格式总结

    SCI/EI期刊投稿Reply Letter常用格式总结          整个论文投稿的过程中,会遇到各种问题,需要我们向主编询问或是回复.下面主要总结了responses to the comme ...

  5. C#常用格式输出

    ylbtech- .NET-Basic:C#常用格式输出 C#常用格式输出 1.A,相关概念返回顶部 using System; namespace Test { class Formating { ...

  6. Swift - 正则表达式的使用(附用户名、邮箱、URL等常用格式验证)

    Swift虽然是一个新出的语言,但却不提供专门的处理正则的语法和类.所以我们只能使用古老的NSRegularExpression类进行正则匹配. 即先接受一个正则表达式的字符串,由此生成NSRegul ...

  7. markdown 常用格式API

    摘要 记录常用格式 参考:https://www.zybuluo.com/mdeditor 1. 标题 写法: 文字前加 #, 几个# 表示几级标题 标题下方增加 = 或 - 效果 标题1 标题2 标 ...

  8. js常用身份校验规则

    js常用身份校验规则 var Validator = { extractBirth: function(id) { // 身份证提取出生年月 var re = null, split, year, m ...

  9. MarkDown常用格式

    常用格式 ** :加粗 <br> : 换行 > :可以用来引用文章,很漂亮. 可以展开的文件夹格式 <details> <summary>框架</sum ...

随机推荐

  1. 140行Python代码实现Flippy Bird

    140行代码实现Flippy Bird 话说这游戏中文名叫什么来着,死活想不起来了,算了话不多说,140行实现小游戏系列第二章,依然是简单小游戏,与数独游戏相比,在游戏界面显示上更难一些,但是在逻辑方 ...

  2. EOS基础全家桶(五)钱包管理

    简介 本篇我们将会学习EOS自带的命令行钱包的使用方法,我们将会使用cleos来控制keosd服务对本地钱包进行管理. 虽然现在市面上已经有很多支持EOS的钱包了,有Web钱包,有app钱包,还有浏览 ...

  3. HDU-1421-搬寝室(01背包改编版)

    搬寝室是很累的,xhd深有体会.时间追述2006年7月9号,那天xhd迫于无奈要从27号楼搬到3号楼,因为10号要封楼了.看着寝室里的n件物品,xhd开始发呆,因为n是一个小于2000的整数,实在是太 ...

  4. SpringMVC知识大览

    SpringMVC大览 springMVC的基础知识 什么是SpringMVC? springmvc框架原理(掌握) 前端控制器.'处理映射器.处理适配器.视图解析器 springmvc的入门程序 目 ...

  5. 手工注入——sql server (mssql)注入实战和分析

    前言 首先要对sql server进行初步的了解.常用的全部变量@@version:返回当前的Sql server安装的版本.处理器体系结构.生成日期和操作系统.@@servername:放回运行Sq ...

  6. Linux 文件管理篇(一 档案读写)

    由第一行开始显示文件内容        cat 由最后一行开始显示文件内容        tac 一页一页的显示文件内容            more 一页一页的显示文件内容(可以向前翻页)     ...

  7. TP3快速入门

    一.查询 D方法实例化模型类的时候通常是实例化某个具体的模型类,如果你仅仅是对数据表进行基本的CURD操作的话,使用M方法实例化的话,由于不需要加载具体的模型类,所以性能会更高. $map = arr ...

  8. python3(二十八)manyExten

    """ 多重继承 """ __author__ = 'shaozhiqi' # start ------------------------ ...

  9. Powershell检查邮件队列设置阈值,通过html形式进行邮件告警

    为了完善公司的整体邮件质量,博主通过zabbix监控了exchange的所有微软推荐项目,并写了很多powershell来辅佐, 旨在更大程度上提高整体的邮件性能 这篇文章主要是讲通过powershe ...

  10. Elasticsearch系列---聚合查询原理

    概要 本篇主要介绍聚合查询的内部原理,正排索引是如何建立的和优化的,fielddata的使用,最后简单介绍了聚合分析时如何选用深度优先和广度优先. 正排索引 聚合查询的内部原理是什么,Elastich ...