shell脚本的编写规范和变量类型
目录
1.1shell的作用
1.2常见的shell解释器
1.3shell脚本用途
2.shell脚本的编写规范和执行方法
2.1shell脚本的组成
2.2shell脚本的执行方法
2.3shell脚本错误
2.4shell脚本的安全选项
3.重定向和管道符
3.1重定向操作的符号用法
4.变量
4.1变量的格式
4.2变量的类型
4.3特殊符号
5.整数的运算
1.shell脚本的相关知识
1.1shell的作用
shell提供了用户和内核进行交互操作的一种接口,简单来说就是shell把人类的高级语言翻译成二进制语言,让计算机明白你的指令
1.2常见的shell解释器
1.3shell脚本用途
将简单的命令组合完成复杂的工作,自动化执行命令,提高工作效率
减少手工命令的重复输入,一定程度上避免人为错误
将软件或应用的安装及配置实现标准化
用于实现日常性的、重要性的运维工作
2.shell脚本的编写规范和执行方法
2.1shell脚本的组成
1、声明解释器
#代表接下来使用什么解释器来解释接下来的命令
2、注释信息
3、执行命令
举例:编写一个yum的shell程序
bash执行
2.2shell脚本的执行方法
1、直接调用shell解释器 加上脚本的名字 bash 脚本名 不需要加上权限
2、路径/脚本 路径:绝对相对 但是这个需要权限
chmod +x hi.sh //为文件增加执行权限
./hi.sh //相对路径方式进行执行
/opt/hi.sh //绝对路径方式进行执行
3、source(.) 加脚本名字 不建议使用 不需要权限 会修改目前的环境内容,会有一些问题
2.3shell脚本错误
1、命令错误 不会影响接下来的命令执行,但是本条命令不执行
bash -x 脚本 模拟执行后 发现错误
2、语法错误 直接影响脚本无法正常运行
bash -n 脚本 检查语法错误
3、逻辑错误
2.4shell脚本的安全选项
set -e 出错就停止
set -u 变量不存在就停止
3.重定向和管道符
重定向:改变电脑数据的输出方向,默认电脑数据的输出方向是屏幕
标准输出:发了一条指令给电脑操作,电脑会回复给你,结果是一定显示在屏幕上
标准输入:我们通过键盘、鼠标、扫描仪、话筒等设备输入给电脑的指令
管道符|:将第一个命令的结果当作后一个命令的处理对象
3.1重定向操作的符号用法
类型 | 操作符 | 用途 |
重定向输入 | < | 从指定的文件中读取数据,不是从键盘输入读取 |
重定向输出 | > | 将输出的结果保存在指定的文件中(覆盖源文件) |
>> | 将输出的结果追加在指定文件的末尾 | |
重定向错误输出 | 2> | 将错误信息保存在指定的文件(覆盖原文件内容) |
2>> | 将错误信息追加在指定文件的末尾 | |
混合输出 | &> | 将标准输出和标准错误信息都保存在同一个文件中 |
4.变量
4.1变量的格式
1、设置变量
变量名=变量值 两边没有空格
2、调用变量
echo $变量名
3、删除变量
unset 变量名
4、重新定义变量
变量名=变量值
5、追加变量值
变量名+=变量值
4.2变量的类型
1、自定义的变量
2、预定义的变量 $? $$ $* $@ shell中带的
$? 代表上一次命令执行结果是否正确 0代表正确 非0代表不正确
$0 代表脚本的文件名字
$$ 当前bash的pid
$# 代表位置参数的总个数
$* 代表返回所有参数 所有参数当成一个整体返回
$@ 代表返回所有参数 每个参数都是一个独立的个体返回
3、环境变量 env 看到所有环境的变量
4、只读变量 只可以读不可以改
5、位置变量 $1 $2 …… $n
4.3特殊符号
${}定义的变量名的范围${}一定不会错
““变量在双引号中可以识别 弱引用
‘’变量在单引号中不被识别 强引用
``反撇号代表引用命令执行的结果 效果等于$()
5.整数的运算
5.1expr的运用
格式:expr 数值1 运算符 数值2 [运算符 数值3]...
运算符:+(加) - (减) \ * (乘 以) /(除于) %( 取余 (取模))
简单简单小白: 《路由器及实验》讲解的很详细,很有参考价值
CSDN-Ada助手: 恭喜您撰写第20篇博客!标题“系统安全及应用”非常引人注目。您在系统安全领域的知识和见解让人印象深刻。我非常欣赏您一直以来的持续创作,这对读者来说是一份宝贵的资源。 鉴于您在系统安全方面的专业知识和经验,我想提供一个创作建议,希望对您有所帮助。或许您可以考虑更深入地探讨系统安全在不同行业和应用中的实际应用案例。通过分享这些案例,您可以帮助读者更好地理解系统安全的重要性,并提供实用的解决方案。当然,这只是一个建议,我相信您会在未来的创作中继续展现出色的表现!
CSDN-Ada助手: 恭喜您写了第12篇博客!标题为“目录和文件管理”,内容看起来非常有趣和实用。您的博客一直为读者提供了很多有价值的信息,并且每一篇都有独特的主题。在下一步的创作中,我建议您可以考虑探索一些更深入的主题,例如文件备份策略或者版本控制系统的选择。不过,我对您的博客一直充满期待,并且相信您会继续带来更多有用的内容。
CSDN-Ada助手: 恭喜您写了第19篇博客!标题“进程和计划任务”听起来非常有趣和有深度。您对这个主题的探索令人印象深刻。在您的博客中,您可能会考虑提及一些实际应用案例或者深入分析一些相关概念,这样读者可以更好地理解进程和计划任务的重要性以及如何在实践中应用它们。期待您下一步的创作,谦虚的态度将会让您的博客更具吸引力!
CSDN-Ada助手: 恭喜您撰写了第18篇博客!标题“引导过程与服务内容”非常吸引人。您对引导过程和服务内容的探讨让读者更加了解了这个领域。不仅如此,您还以谦虚的态度分享了自己的见解和思考,这让我对您的专业素养和知识深度更加钦佩。接下来,我期待您能够继续深入挖掘这一主题,并加入更多实例和案例分析,这将使您的博客更加丰富多样。祝您在下一步的创作中继续取得成功!