shell编程基础(shell编程基础实验报告)

shell编程基础(shell编程基础实验报告)蓝湖内推 北京尽微致广信息技术有限公司 前后端测开大量 HC 坐标北京朝阳区望京 SOHO 福利多多 欢迎小伙伴们投递 内推码 BSW6GF7 投递链接 本文首先介绍了 Shell 编程是什么 并带大家快速入门 随后讲解 Shell 的基本语法并结合案例重点分析用法 包括 Shell 流程控制和自定义函数等 建议收藏 谁需要学习 Shell 编程 Linux 运维工程师

大家好,我是讯享网,很高兴认识大家。



蓝湖内推(北京尽微致广信息技术有限公司 ),前后端测开大量HC,坐标北京朝阳区望京SOHO,福利多多,欢迎小伙伴们投递。

内推码: BSW6GF7

投递链接:

本文首先介绍了 Shell 编程是什么,并带大家快速入门,随后讲解 Shell 的基本语法并结合案例重点分析用法。包括 Shell 流程控制和自定义函数等。建议收藏。
谁需要学习 Shell 编程?

  1. Linux运维工程师:编写Shell程序进行服务集群管理。
  2. Python和JavaEE程序员:编写Shell脚本程序或者是服务器的维护,比如编写一个定时备份数据库的脚本。
  3. 大数据程序员:编写Shell程序来管理集群。

Shell 是什么?
Shell 是一个命令解释权,它为用户提供了一个向 Linux 内核发送请求以便运行程序界面系统级程序,用户可以用 Shell 来启动、挂起、停止甚至是编写一些程序。


Shell 编程快速入门
进入 Linux 终端,编写一个 Shell 脚本 hello.sh :


终端打印出 。
说明:

  • 告诉系统这个脚本需要什么解释器来执行。
  • 文件扩展名 不是强制要求的。
  • 方法1 直接运行解释器, 作为 Shell 解释器的参数。此时 Shell 脚本就不需要指定解释器信息,第一行可以去掉。
  • 方法2 hello.sh 作为可执行程序运行,Shell 脚本第一行一定要指定解释器。

Shell 变量
定义
Shell 变量分为系统变量自定义变量。系统变量有\(HOME、\)PWD、\(USER等,显示当前 Shell 中所有变量: 。 <br/>变量名可以由字母、数字、下划线组成,不能以数字开头。<br/><b>基本语法</b></p><ul><li data-pid="l34Z_BO8"><b>定义变量:</b>变量名=变量值,等号两侧不能有空格,变量名一般习惯用大写。</li><li data-pid="8w196A2n"><b>删除变量:</b>unset 变量名 。</li><li data-pid="N8Yufcbh"><b>声明静态变量:</b>readonly 变量名,静态变量不能unset。</li><li data-pid="L-GPjzHe"><b>使用变量:</b>\)变量名

将命令返回值赋给变量(重点)

  • A=ls 反引号,执行里面的命令
  • A=\((ls) 等价于反引号</li></ul><p data-pid="Aw9A0Z6K"><b>Shell 环境变量</b><br/><b>定义</b></p><figure data-size="normal"><div style="width: 100%; height: 0; padding-bottom: 76.11%;"><img data-src="https://pic4.zhimg.com/v2-42d4bcd62135b3508aa4ad7f3_b.jpg?consumer=ZHI_MENG" data-sign="lazyloadimg" src="https://pic4.zhimg.com/v2-42d4bcd62135b3508aa4ad7f3_b.jpg?consumer=ZHI_MENG" data-caption="" data-size="normal" data-rawwidth="601" data-rawheight="458" class="origin_image zh-lightbox-thumb" width="601" data-original="https://pic4.zhimg.com/v2-42d4bcd62135b3508aa4ad7f3_r.jpg" data-original-token="v2-acb8352c8e9c078ee05de6b8dbfd8096"/></div></figure><p data-pid="wnav5dmu"><br/><b>基本语法</b></p><ol><li data-pid="tZSvKDJa">export 变量名=变量值,将 Shell 变量输出为环境变量。</li><li data-pid="WaQiiyJB">source 配置文件路径,让修改后的配置信息立即生效。</li><li data-pid="CMUFfXYx">echo \)变量名,检查环境变量是否生效
  • 位置参数变量
    基本语法

    • \(n :\)0 代表命令本身、\(1-\)9 代表第1到9个参数,10以上参数用花括号,如 \({10}。</li><li data-pid="jPMKg0gy">\)* :命令行中所有参数,且把所有参数看成一个整体。
    • \(@ :命令行中所有参数,且把每个参数区分对待。</li><li data-pid="Fc48dsWP">\)# :所有参数个数。

    实例:
    编写 Shell 脚本 positionPara.sh ,输出命令行输入的各个参数信息。


    预定义变量
    定义
    在赋值定义之前,事先在 Shell 脚本中直接引用的变量。
    基本语法



    • $\( :当前进程的 PID 进程号。</li><li data-pid="lgktz5O2">\)! :后台运行的最后一个进程的 PID 进程号。
    • \(? :最后一次执行的命令的返回状态,0为执行正确,非0执行失败。</li></ul><p data-pid="Px1l8Ur-"><b>实例:</b><br/>编写 Shell 脚本 prePara.sh ,输出命令行输入的各个参数信息。</p><p data-pid="ZVskHq"><br/>运行结果:</p><p data-pid="kJmpDo1y"><br/><b>运算符</b><br/><b>基本语法</b></p><ul><li data-pid="0IFD1HSQ">\)((运算式)) 或 \([运算式]</li><li data-pid="rgYuePFZ">expr m + n 注意 expr 运算符间要有空格</li><li data-pid="wNN3-JUw">expr m - n</li><li data-pid="nes4HJmv">expr *,/,% 分别代表乘,除,取余</li></ul><p data-pid="kTBu4lO6"><b>实例</b></p><p data-pid="ekN0IW0a"><br/><b>条件判断</b><br/><b>基本语法</b><br/>[ condition ] 注意condition前后要有空格。非空返回0,0为 true,否则为 false 。<br/><b>实例</b></p><p data-pid="CkNTpDXq"><br/>运行结果:</p><p data-pid="VeaM7BAN">编写 Shell 程序:如果输入的参数大于60,输出“及格”,否则输出“不及格”。</p><p data-pid="PTeFCqJQ">当命令行参数为1时输出“周一”,2时输出“周二”,其他情况输出“其它”。</p><ol><li data-pid="J4aQnAC5">打印命令行输入的参数。</li></ol><p data-pid="_59alXmz">运行结果(回顾一下 \)* 和 $@ 的区别):

2. 输出从1加到100的值。

输出从1加到100的值。

read(选项)(参数)
选项

  • -p:指定读取值时的提示符
  • -t:指定读取值时等待的时间(秒),如果没有在指定时间内输入,就不再等待了。

参数

  • 变量名:读取值的变量名

读取控制台输入一个num值。

运行结果:

和其它编程语言一样,Shell 编程有系统函数和自定义函数,本文只举两个常用系统函数。

  • basename,删掉路径最后一个 / 前的所有部分(包括/),常用于获取文件名。
    基本语法
    • basename [pathname] [suffix]
    • basename [string] [suffix]
    • 如果指定 suffix,也会删掉pathname或string的后缀部分。

实例

  • dirname,删掉路径最后一个 / 后的所有部分(包括/),常用于获取文件路径。
    基本语法
    • dirname pathname
    • 如果路径中不含 / ,则返回 ‘.’ (当前路径)。

实例

计算输入两个参数的和。

恭喜!你已经掌握了 Shell 的基本语法,入门很简单。想要更系统的探索Shell编程,可以和我一起深入学习接下来的高级篇。老样子,向大家推荐一本最值得购入和收藏的程序员必读好书:

《深入理解计算机系统》属于圣经级别的众多国内外名校教材(北大清华上海交大,国外简直更多了),罕见的豆瓣评分9.5,也是我最喜欢的专业书。读过好几遍了,不管是学生还是开发老手,这绝对是程序员最值得投资并且之后不会后悔的书,有点难,但很有用,想要电子版的也可以私信我,免费送你

如果本文对你有帮助,收藏完了也点个赞互相鼓励一下吧~另外欢迎大家关注我的主页,会不定期输出有价值的内容。

不看后悔系列:

Linux针对很多常用命令增加了很多新的更加有用高效的新命令,这些命令不但可以大大提高工作效率和体验,让你在同事面前装那啥的利器,如果能在面试新工作时提起这类命令,更是能给面试官眼前一亮的加分项,下面展示了几个在工作中最常用的命令。

  • 如果你想要有语法高亮的 ,可以试试 命令。
  • 增强了 命令,如果你需要在很多目录上浏览各种文件 , 命令可以比 和 更有效率,甚至可以在你的终端预览图片。
  • 是一个比 更简单更快的命令,他还会自动地忽略掉一些你配置在 中的文件,以及 下的文件。
  • 会是一个很好用的文件搜索神器,其主要是搜索当前目录以下的文件,还可以使用 边搜索文件边浏览内容。
  • 是一个上古神器,然而, 是更好的grep,和上面的 一样,在递归目录匹配的时候,会使用你配置在 中的规则。
  • 是一个危险的命令,尤其是各种 ,所以, 是一个更好的删除命令。
  • 命令是好读文档的命令,但是man的文档有时候太长了,所以,你可以试试 命令,把文档上的一些示例整出来给你看。
  • 如果你想要一个图示化的,你可以试试
  • 如果你想搜索以前打过的命令,不要再用 Ctrl +R 了,你可以使用加强版的
  • 是 top 的一个加强版。然而,还有很多的各式各样的top,比如:用于看IO负载的 ,网络负载的 , 以及把这些top都集成在一起的
  • 比 du 好用多了。另一个选择是
  • 如果你想把你的命令行操作录制成一个 SVG 动图,那么你可以尝试使用
  • 是一个可以用来替代 和 的 http 客户端, 支持 json 和语法高亮,可以使用简单的语法进行 http 访问: 。
  • 在需要经常登录远程服务器工作的时候会很有用,可以保持远程登录的会话,还可以在一个窗口中查看多个 shell 的状态。
  • 是个神器,在你登录远程服务器的时候也能使用本机的 shell 的 rc 文件中的配置。
  • 这个是一个轻量级的分析统计日志文件的工具,主要是分析各种各样的 access log。

往期高收藏:

小讯
上一篇 2025-04-14 21:19
下一篇 2025-05-21 23:20

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/198587.html