当前位置:网站首页>Shell编程规范与变量
Shell编程规范与变量
2022-07-28 06:55:00 【Y坚定的唯物主义者】
Shell脚本概述
一、Shell脚本的概念
- 将要执行的命令按顺序保存到一个文本文件
- 给该文件可执行权限
- 可结合各种Shell控制语句以完成更复杂的操作
二、Shell脚本应用场景
- 重复性操作 例如:可以帮助我们解决类似定期备份文件等重复性工作
- 交互性任务 例如:可以帮助我们解决需要繁琐配置密钥解决交互的问题
- 批量事务处理 例如:可以帮我们在批量递归查询某文件时,稳定精确的找到我们所需要的文件
- 服务运行状态监控 例如:当有大量服务时,人为的去一条条监控明显不现实,这时就可以用脚本来进行监控
- 定时任务执行(绝对路径) 例如:可以帮助我们完成例如定时发布或定时备份等操作
三、Shell脚本的作用
自动化运维
批量化重复操作可以编写脚本结合计划任务自动周期运行
减轻管理员工作量
提高处理文本文件的速度
避免配置出错
四、Shell脚本的构成
构成:
脚本申明(解释器):第一行开头"#!/bin/bash",表示此行一下的代码语句是通过/bin/bash程序来结实执行,#!/bin/bash为默认解释器,还有其他类型的解释器,比如:
#!/usr/bin/python #!/usr/bin/expect注释信息:以“#”开头的语句表示为注释信息,<u>被注释的语句在运行脚本时将不被执行</u>
可执行语句:比如echo命令,用于输出" "之间的字符串
五、Shell脚本的执行
编写Shell脚本
使用vim文本编辑器
每行一条Linux命令,按执行顺序依次编写

赋予可执行权限
使脚本具有可执行属性
方法一:指定路径去执行文件,脚本文件路径(绝对路径与相对路径)



方法二:指定Shell去执行脚本
通过bash命令找到Bash解释器所在的目录,然后再运行,只不过多了一个查找的过程

六、重定向
1、交互式硬件设备
- 标准输入:从设备(字符设备:键盘鼠标)接收用户输入的数据
- 标准输出:通过设备(显示器)向用户输出数据
- 标准错误:通过设备(显示器)报告执行出错信息

2、重定向操作

3、管道操作 |
将管道符号"|"左侧的命令输出的结果,作为右侧命令的输入(处理对象),同一行命令中可以使用多个管道。
ps aux | wc -l #查看当前进程的数量
echo "123456" | passwd --stdin zhangshan#批量修改登录码,stdin模拟键盘输入七、Shell脚本的变量
变量的作用
- 用来存放系统和用户需要使用的特定参数(值)
- 变量名:使用固定的名称,由系统预设或用户定义
- 变量值:能够根据用户设置、系统环境的变化而变化
变量的类型
- 自定义变量:由用户自己定义、修改和使用
- 特殊变量:环境变量,只读变量,位置变量,预定义变量
自定义变量:由用户自己定义,修改和使用
环境变量:由系统维护,用于设置工作环境
只读变量:只可以读取不可以更改
位置变量:通过命令行给脚本传递参数
预定义变量:Bash中内置的一类变量,不能修改
命名要求
- 区分大小写
- 不能使用程序中保留和内置变量:if,for,hostname
- 只能使用数字、字母及下划线,且不能以数字开头,注意:不支持持短横线"-",和主机名相反
- 不要使用内置的变量,使用英文尽量使用词义通俗易懂
- 大驼峰 StudentFirstName
- 小驼峰 studentFirstName
- 下划线 student_name
八、自定义变量
定义一个新的变量
- 变量名以字母或下划线开头,不能以数字符号开头;区分大小写,建议全大写
变量名=变量值 #定义一个新的变量
或/补:
declare [+/-][rxi][变量名称=设置值]
+/- "-"可用来指定变量的属性,"+"则是取消变量所设的属性。
-f 仅显示函数。
r 将变量设置为只读。
x 指定的变量会成为环境变量,可供shell以外的程序来使用。
i [设置值]可以是数值,字符串或运算式。
查看变量的值
echo $变量名 #查看变量的值,$为变量替换的代表符号
unset 变量值 #取消变量
赋值时使用符号
边栏推荐
- 2022 Niuke multi school second problem solving Report
- File editing component
- Prescan quick start to master the transportation elements in lesson 14, prescan
- Recommend a fully open source, feature rich, beautiful interface mall system
- Meituan Er Mian: why does redis have sentinels?
- Get the clicked line number in qtablewidget
- 学术界爆火的类脑智能,啥时候能落地?来听行业大咖怎么说丨量子位·对撞派 x 时识科技...
- Day112.尚医通:手机验证码登录功能
- Can‘t connect to server on ‘IP‘ (60)
- Five screens, VR, projection, "Wei Xiaoli" rolled up on the intelligent cockpit
猜你喜欢

数字签名和CA证书

Es6: template string

机器学习如何做到疫情可视化——疫情数据分析与预测实战

Plantuml Usage Summary

Melt cloud x chat, create a "stress free social" habitat with sound

MySQL how to add users and set permissions?
![[pyqt] pyqt development experience_ How to find events and methods of controls](/img/40/7597d6413c88793e22276325d5f602.png)
[pyqt] pyqt development experience_ How to find events and methods of controls

Half bridge buck circuit - record

Kubernetes技术与架构(七)

uniapp---- 获取当前位置的经纬度等信息的详细步骤(包含小程序)
随机推荐
Mysql-怎么添加用户和设置权限?
XSS knowledge points and 20 character short domain name bypass
[leetcode] 24. Exchange nodes in the linked list in pairs
Can a flinksql script write insert statements for two tables?
File editing component
[pyqt] pyqt development experience_ How to find events and methods of controls
Prescan quick start to master the road elements of lecture 15
QT uses semaphores to control threads (qsemaphore)
阻塞队列LinkedBlockingQueue 源码解析
Unity切换到另一个场景的时候,发现该场景变暗了
优炫数据库导入和导出方法
Talk about synchronous, asynchronous, blocking and non blocking
5张图告诉你:同样是职场人,差距怎么这么大?
百度智能云九州区县大脑,描绘城乡新蓝图!
See how Google uses pre training weights in target detection tasks | CVPR 2022
Prescan quick start to master the track editing path of Lecture 16
Tell you step by step what you need to do to apply for PMP? What should I do?
网口网络水晶头RJ45、POE接口定义线序
机器学习如何做到疫情可视化——疫情数据分析与预测实战
[chart component kit] Shanghai daoning provides developers with steema download, trial and tutorial