当前位置: 首页 > news >正文

实验四、shell编程

一、实验目的

1.了解shell的特点和主要种类。
2.掌握 shel1 脚本的建立和执行方式。
3.掌握bash的基本语法。
4.学会编写shell 脚本。

二、实验内容

  1. shell 脚本的建立和执行。
  2. 历史命令和别名定义。
  3. shell变量和位置参数、环境变量。
  4. bash的特殊字符。
  5. 一般控制结构。
  6. 算术运算及bash 函数。

三、主要实验步骤

  1. 利用 vi建立一个脚本文件,其中包括 date、cal、pwd、 ls等常用命令;然后以不同方式执行该脚本。
    创建脚本文件: 在这里插入图片描述
    在这里插入图片描述
    以不同的方式执行脚本:

    1. 输入定向到shell脚本
      在这里插入图片描述

      shell从example中读取命令行,并执行他们。当shell到达文件末尾时,终止执行,并把控制返回到shell命令状态

    2. 以脚本名作为bash参数
      在这里插入图片描述
      执行过程与第一种方式相同,但这一种方式能在脚本名后面带参数,从而将参数值传递给程序中的命令,使一个shell脚本可以处理多种情况,就如同函数的调用,可以根据问题给定相应的实参

    3. 将shell脚本的权限设置为可执行,然后在提示符下直接执行
      首先将文本编辑器建立的shell脚本设置为有执行权限
      在这里插入图片描述
      然后将该脚本所在的目录添加到命令搜索路径(PATH)中
      在这里插入图片描述
      然后就可以在提示符后输入脚本名example就可以直接执行该文件
      在这里插入图片描述

  2. 运行history命令,配置历史命令环境。
    显示历史命令清单:
    在这里插入图片描述
    配置历史命令环境:

    • 通过重新为环境变量HISTFILE赋值来改变存放历史命令的文件
      在这里插入图片描述
    • 利用HISTSIZE变量重新设定历史文件中能够保留的命令的个数限定
      在这里插入图片描述
  3. 体会 bash的命令补齐功能。
    在命令行上输入部分目录名称或文件名并按下Tap键后,可能出现下述情况:

    • 若系统可以唯一确定是哪个目录或文件,则自动补全相应的名称。按Enter键执行该命令
    • 若Linux找到了不止一个文件名,则会把文件名补全到这些文件名中相同的部分的最后一个字符
    • 若shell根据已输入的字符不能唯一确定相应的名称,则会尽量补齐后面的字符,然后响铃提示,要求用户进一步输入名字中后面的字符

    如果输入过程中不知道后面的字符,系统也无法唯一确定名称,则可以先按Esc键,然后按?键,或者连续按两次Tab键,shell会列出当前目录下所有可以匹配已输入字符的文件或者给出可以匹配已输入字符的命令
    在这里插入图片描述

  4. 用alias定义别名, 然后执行。

    定义别名:在这里插入图片描述
    定义变量my并赋值,然后执行 在这里插入图片描述

  5. 对习题4.8中的shell 脚本进行编辑,然后执行。
    新建脚本example2,并输入如下内容,然后保存退出
    在这里插入图片描述
    然后执行该脚本
    在这里插入图片描述
    由此可见该脚本的功能是换行

  6. 按习题4.14要求编写脚本,然后执行。
    求斐波那契数列的前10项及总和
    在这里插入图片描述
    在这里插入图片描述

  7. 按习题4.18要求编写脚本,然后执行。
    设计一个程序cuts,由标准输入读取数据,获取由第一个参数n和第二个参数m所限定范围的数据,n和m都是整数,即从输入的字符串中抽取第n个字符至第m个字符之间的所有字符(包含这两个字符)
    在这里插入图片描述
    在这里插入图片描述

  8. 运行例 4.20的程序。若取消其中的“eval",则会出现什么情况?
    在这里插入图片描述
    在这里插入图片描述
    取消其中的eval后:
    在这里插入图片描述
    在这里插入图片描述

http://www.lryc.cn/news/92142.html

相关文章:

  • 【代码随想录】刷题Day51
  • centos7下svnserve方式部署subversion/SVN服务端(实操)
  • 一款红队批量脆弱点搜集工具
  • Docker 基本管理
  • Debezium系列之:把多张表的数据分发到同一个Kafka Topic,同一张表的数据始终进入Topic相同分区
  • 雪崩 - 如何重试 - sla和重试风暴的双保证
  • [网鼎杯 2018]Fakebook1
  • Oracle-第一章-多表查询和其他
  • Office Visio 2016安装
  • GPT从入门到精通之 GPT 模型入门及原理介绍
  • USB数据线上的“疙瘩”
  • 公司新来了个00后测开,上来一顿操作给我秀麻了.....
  • 深度学习架构-Tensorflow
  • SpringBoot 使用validator进行参数校验(实例操作+注意事项+自定义参数校验)
  • 字节测开岗面试记:二面被血虐,幸好还是拿到了Offer.....
  • 只会标准答案,是不可救药的愚蠢
  • RocketMQ broker启动失败
  • 浅谈useMemo函数
  • 【Python】Python系列教程-- Python3 推导式(十九)
  • docker对cpu资源做限制
  • 国际化语言项目
  • 交直流系统潮流计算及相互关联特性分析(Matlab代码实现)
  • 如何快速掌握Facebook运营+独立站运营基础?
  • Java之旅(十三)
  • Calibre 6.18.1 正式发布,功能强大的开源电子书工具
  • 如何在C语言中定义和使用函数?
  • 【C++】4.多媒体库:SFML库入门
  • 【算法题】1717. 删除子字符串的最大得分
  • Codeforces Round 877 (Div. 2) ABCD
  • easyExcel导入失败提示用户第几行有误并回滚数据