shell脚本编写规范和相关变量类型
shell编程规范与变量
一.shell脚本概述
① 什么是shell? Linux中有哪些shell?
② shell的作用
③ 用户的登录shell
④ shell脚本的概念
⑤ shell脚本应用场景
二.shell编程规范
① 编写脚本代码
② shell脚本的构成
③ shell脚本的执行
三.重定向与管道操作
① 管道操作
② 重定向
四.shell变量的作用、类型
① 变量的作用
② 变量的类型
▷ 自定义变量
▷ 环境变量
▷ readonly命令设置只读变量
▷ 位置变量
▷ 预定义变量
▷ 整数变量的运算
▷ bash不支持浮点运算,如果需要进行浮点运算,需要借助bc, awk 处理
总结
一.shell脚本概述
① 什么是shell? Linux中有哪些shell?
什么是shell?
• 就是与内核沟通的界面、应用程序、KDE等等。比如你要播放音乐,你的计算机通过你在Shell输入的打开音乐的命令,Shell在告诉操作系统的内核用户希望打开音乐,内核在通过cpu调度、内存管理、磁盘输入输出等工作,将硬件调动,这时硬件声卡才会工作,硬件才是实际的工作者
• Shell ( 壳程序)是一个特殊的应用程序,它介于操作系统内核与用户之间,充当了一个“命令解释器”的角色,负责接收用户输入的操作指令(命令)并进行解释,将需要执行的操作传递给内核执行,并输出执行结果
Linux中有哪些Shell?
• 检查一下/etc/shells这个文件,里面就是Linux所包含的Shell
• 最常用的就是bash、tcsh、csh、 sh、nologin这些shell。这些shell都是依据Linux发展者的不同所创造出的不同版本
bash: 基准于GNU的框架下发展出的Shell
csh: 语法有点类似于c语言的Shell
tcsh: 整合了csh,提供更多的功能
sh: 已经被bash所替换
nologin: 奇怪的shell,这个shell可以让用户无法登录主机
注: bash ( /bin/bash)是目前大多数Linux 版本采用的默认Shell
② shell的作用
介于系统内核与用户之间,负责解释命令行

③ 用户的登录shell
• 登录后默认使用的shell程序,一般为/bin/bash
• 不同的shell的内部指令、运行环境等会有所区别
④ shell脚本的概念
• 将要执行的命令按顺序保存到一个文本文件
• 给该文件可执行权限
• 可结合各种shell控制语句以完成更复杂的操作
⑤ shell脚本应用场景
• 重复性操作
• 交互性任务
• 批量事务处理
• 服务运行状态监控
• 定时任务执行
二.shell编程规范
① 编写脚本代码
• 使用vim 文本编辑器
• 每行一条Linux命令,按执行顺序依次编写
② shell脚本的构成
1.脚本申明(解释器) : 若第一行为“#!/bin/bash", 表示此行以下的代码语句是通过/bin/bash程序来解释执行,#!/bin/bash为默认解释器。还有其它类型的解释器,比如# ! /usr/bin/python、#! /usr/bin/ expect
2.注释信息: 以“#”开头的语句表示为注释信息,被注释的语句在运行脚本时不会被执行
3.可执行语句: 比如echo命令,用于输出" "之间的字符串

三.重定向与管道操作
① 管道操作
将管道符号“|”左侧的命令输出的结果,作为右侧命令的输入(处理对象),同一行命令中可以使用多个管道





四.shell变量的作用、类型
① 变量的作用
• 用来存放系统和用户需要使用的特定参数(值)
变量名:使用固定的名称,由系统预设或用户定义
变量值:能够根据用户设置、系统环境的变化而变化
② 变量的类型
• 自定义变量:由用户自己定义、修改和使用
• 特殊变量:环境变量、只读变量、位置变量、预定义变量
环境变量: 由系统维护,用于设置工作环境
位置变量: 通过命令行给脚本程序传递参数
预定义变量: Bash中内置的一类变量,不能直接修改
▷ 自定义变量
定义一个新的变量
变量名以字母或下划线开头,区分大小写,建议全大写
变量名=变量值
查看变量的值
echo $变量名
赋值时使用引导
• 双引号:允许通过$符号引用其他变量值
• 单引号:禁止引用其他变量值,$视为普通字符
• 反撇号:命令替换,提取命令执行后的输出结果





















总结
• Shell的作用与 应用场景
• Shell脚本的编写规范与执行方法:
• 重定向与管道的作用与使用方法
• 自定义变量赋值时单引号、双引号、反撇号的使用方法
• 数值变量的常用运算符: +、-、 \ *、 /、 %
• 环境变量、 只读变量、位置变量、预定义变量的用途
shell脚本编写规范和相关变量类型的更多相关文章
- 【Shell Basic】Shell脚本编写规范
shell脚本需要有较高的实用性.可维护.可阅读.方便他人阅读,因而需要建立一定的规范来操作 dream361@master:~$ cat test2.sh #!/bin/bash 所使用的bash程 ...
- Shell脚本编写规范
shell脚本需要有较高的实用性.可维护.可阅读.方便他人阅读,因而需要建立一定的规范来操作 dream361@master:~$ cat test2.sh #!/bin/bash 所使用的bash程 ...
- Shell脚本开发规范
一.前言 由于工作需要,最近重新开始拾掇shell脚本.虽然绝大部分命令自己平时也经常使用,但是在写成脚本的时候总觉得写的很难看.而且当我在看其他人写的脚本的时候,总觉得难以阅读.毕竟shell脚本这 ...
- shell脚本编写方法
shell脚本编写就如同一门语言,涉及到运行环境.基本语法.变量定义.函数.参数(系统参数).条件判定.执行流程控制 等等问题. 本文就以下几个方面进行描述: 运行环境: shell shebang ...
- shell脚本编写笔记
包含转载内容,转载自http://wenku.baidu.com/link?url=jtCHxEYzgGve6P64U3JRQRgU6nhpGvqFLLpWu9I2Htq6hi9TGLudRFkk7r ...
- appium+python 【Mac】UI自动化测试封装框架介绍 <七>---脚本编写规范
脚本的使用,注释非常关键,无论自己的后期查看还是别人使用,都可以通过注释很明确的知道代码所表达的意思,明确的知道如何调用方法等等.每个团队均有不同的商定形式来写脚本,因此没有明确的要求和规范来约束.如 ...
- Postman接口测试脚本编写规范
Postman接口测试脚本编写规范 1.前言 2.名词解释 3.接口测试脚本规范 3.1接口测试脚本编写的规范 3.2 Postman使用规范 4.单个接口测试 5.整个流程的开发过程 1.前言 本规 ...
- 7. Shell 脚本编写
一.Shell 脚本编写 1.提示用户输入一个字符串,如果是 hello,打出 yes,并每秒输出 "hello,world",否则就输出 no,实现如下: #!/bin/bash ...
- shell脚本实现监控shell脚本的执行流程及变量的值
这篇文章主要介绍了shell脚本实现监控shell脚本的执行流程及变量的值本文使用shell完成对执行过程中条件语句中的变量的变化的监控和整个程序的执行流程的观察功能,需要的朋友可以参考下 很多时候, ...
随机推荐
- C语言编译器开发之旅(一):词法分析扫描器
本节我们先从一个简易的可以识别四则运算和整数值的词法分析扫描器开始.它实现的功能也很简单,就是读取我们给定的文件,并识别出文件中的token将其输出. 这个简易的扫描器支持的词法元素只有五个: 四个基 ...
- openresty 学习笔记番外篇:python访问RabbitMQ消息队列
openresty 学习笔记番外篇:python访问RabbitMQ消息队列 python使用pika扩展库操作RabbitMQ的流程梳理. 客户端连接到消息队列服务器,打开一个channel. 客户 ...
- 多目标跟踪:CVPR2019论文阅读
多目标跟踪:CVPR2019论文阅读 Robust Multi-Modality Multi-Object Tracking 论文链接:https://arxiv.org/abs/1909.0385 ...
- Fine-Tuning微调原理
Fine-Tuning微调原理 如何在只有60000张图片的Fashion-MNIST训练数据集中训练模型.ImageNet,这是学术界使用最广泛的大型图像数据集,它拥有1000多万幅图像和1000多 ...
- ES6函数参数
之前在看Vue2.0的时候,就被很多的箭头函数困扰,一直不知道是怎么回事,虽然箭头函数四个字在我耳边一直转圈,今天小编整理整理箭头函数里面的常见用法和表现形式,在这个Vue3.0已经到来的一段时间,希 ...
- 技能篇:shell教程及脚本编写
前言 我们常时不会见到shell脚本,但是需要阅读开发linux脚本时,这又是一项必不可少的技能.本文在于提供基础的shell编程语法和简单的实例,帮助同学快速开发,可当做shell手册使用也非常善 ...
- RAC+DG修改sys密码
一.版本: 操作系统版本:SUSE 11 数据库版本:11.2.0.4 二.需求 因安全要求,需要修改SYS密码 三.步骤 1节点执行命令: alter user sys identified by ...
- html中各种标签和属性(最基础的基本都有)
1.标题标签: h1~h6 ctrl+1~6 2.段落标签: p ctrl+shift+p 3.换行标签: br shift+回车 4.水平线: hr 5.加粗标签: stro ...
- SQL修改表约束实现
先删除表约束 Alter Table 表名 Drop Constraint 约束名 然后再新建约束(加上级联删除) Alter Table Table_Name Add Constraint FK_T ...
- Java 提效神器 Stream 的冷门技巧
Stream 使用这个方法创建一个 Stream 对象. new ArrayList<>().stream() Filter 过滤器,里面传递一个函数,这个函数的返回结果如果为 true ...