【CentOS Linux 7】实验2【Shell编程及应用】
- Linux系统及应用---调研报告
- 【CentOS Linux 7】实验1【VMware安装、新建虚拟机;63个基础命令运行结果图】
- 【CentOS Linux 7】实验2【Shell编程及应用】
- 【CentOS Linux 7】实验3【用户组群管理、磁盘分区及文件系统管理】
- 【CentOS Linux 7】实验4【Linux网络应用、Linux下C语言编程】
- 【CentOS Linux 7】实验5【安装VScode,并用VScode编写HTML网页】
- 实验4文档:gcc编译器、Linux网络配置基础
目 录
【实验目的】
【实验步骤】
(1)使用for语句创建一个shell程序,其功能为1+2+3+…+n。
(2)给下列程序加上注释
(3)从键盘输入三个数并进行升序排序,然后输出到屏幕。
(4)给下列程序加上注释
(5)打印九九乘法表
(6)给下列程序加上注释
(7)给下列程序加上注释
(8)给下列程序加上注释
(9)打印斐波那契数列
【实验总结】
【实验目的】
- Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务;
- 学会shell编程的变量、表达式、顺序、选择、循环及函数的使用方法;
- 学会编写基本的SHELL应用程序。
【实验步骤】
(1)使用for语句创建一个shell程序,其功能为1+2+3+…+n。
程序源代码为:
#!/bin/bash # “#!”是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行 read -p "what's n? :" n # read-p 后面跟提示信息,即在输入前打印提示信息 s=0 # 初始化累加和 for (( i=1; i<=$n; i=i+1)) # for循环,用来累加和 do s=$(( $s+$i )) # 增加s的值 done echo "1+2+...+$n = $s" # 输出累加和s
运行截图为:
(2)给下列程序加上注释
#!/bin/bash # “#!”是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行
num=$[RANDOM%100+1] # RANDOM 为系统自带的系统变量,值为 0‐32767的随机数
echo "$num" # echo 命令用于向窗口输出 产生的随机数。
while : # while循环语句
doread -p "计算机生成了一个 1‐100 的随机数,你猜: " cai
# 使用 read 提示用户猜数字;read-p 后面跟提示信息,即在输入前打印提示信息if [ $cai -eq $num ] #if条件语句;如果 随机数 等于 用户所输入的数字thenecho "恭喜,猜对了" #if语句,命令行1:输出“恭喜,猜对了”exit #exit命令用于退出目前的shell程序elif [ $cai -gt $num ] #if语句,命令行2thenecho "Oops,猜大了"elseecho "Oops,猜小了"fi # if else-if else 语法格式 终止
done # while循环语句 终止
(3)从键盘输入三个数并进行升序排序,然后输出到屏幕。
程序源代码为:
#!/bin/bash read -p "请输入一个整数:" num1 # 从命令行输入1个数字 read -p "请输入一个整数:" num2 # 从命令行输入1个数字 read -p "请输入一个整数:" num3 # 从命令行输入1个数字 tmp=0 # 定义1个临时变量存放数据 # 将num1和num2进行比较,如果num1大于num2,将num1和num2的值对调 if [ $num1 -gt $num2 ];thentmp=$num1num1=$num2num2=$tmp fi if [ $num1 -gt $num3 ];then # 如果num1大于num3,将num1和num3的值对调tmp=$num1num1=$num3num3=$tmp fi if [ $num2 -gt $num3 ];then # 如果num2大于num3,将num2和num3的值对调tmp=$num2num2=$num3num3=$tmp fi echo "排序后数据(从小到大)为:$num1,$num2,$num3"
运行截图为:
(4)给下列程序加上注释
#!/bin/bash # “#!”是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行
game=(石头 剪刀 布) #定义数组,保存所有出拳的可能性;0:石头,1:剪刀,2:布
num=$[RANDOM%3] #随机数0 1 2
computer=${game[$num]} #通过 随机数,获取计算机的出拳手势echo "请根据下列提示选择您的出拳手势"
echo "1.石头"
echo "2.剪刀"
echo "3.布"read -p "请选择 1‐3:" person #read-p 后面跟提示信息,提示用户出拳
#通过case语句判断用户输入的值是1、2还是3,根据不同的输入 输出 不同的结果
case $person in
1)if [ $num -eq 0 ] #如果电脑产生的随机数是0,则 平局thenecho "平局"elif [ $num -eq 1 ] #如果电脑产生的随机数是1,则 用户赢thenecho "你赢"elseecho "计算机赢" #不符合以上两种情况,则 计算机赢fi;;
2) if [ $num -eq 0 ] #如果电脑产生的随机数是0,则 计算机赢thenecho "计算机赢"elif [ $num -eq 1 ] #如果电脑产生的随机数是1,则 平局thenecho "平局"elseecho "你赢" #不符合以上两种情况,则 用户赢fi;;
3)if [ $num -eq 0 ] #如果电脑产生的随机数是0,则 用户赢thenecho "你赢"elif [ $num -eq 1 ] #如果电脑产生的随机数是1,则 计算机赢thenecho "计算机赢"elseecho "平局" #不符合以上两种情况,则 平局fi;;
*) #case命令的最后运算式echo "必须输入 1‐3 的数字!" #若用户输入错误,则输出 提示信息
esac
(5)打印九九乘法表
程序源代码为:
#!/bin/bash echo -e "\n" #换行 for((i=1;i<=9;i++)) #第一重for循环 dofor((j=1;j<=i;j++)) #第二重for循环doecho -n -e "$j*$i="$[j*i]"\t" #打印九九乘法表doneecho -e "\n" #换行 done
运行截图为:
(6)给下列程序加上注释
#!/bin/bash # “#!”是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行
# ls命令用于显示指定工作目录下之内容(列出目前工作目录所含之文件及子目录)
for i in "ls *.$1"
domv $i ${i%.*}.$2 # mv命令用来为文件或目录改名、或将文件或目录移入其它位置
done
(7)给下列程序加上注释
#!/bin/bash
read -p "请输入一个年份:" year # 使用 read-p 提示用户输入年份if [ "$year" = "" ];then #如果用户没有输入任何内容,则输出提示信息echo "没有输入年份"exit
fiif [[ "$year" =~ [a‐Z] ]];then #如果用户输入的是a-Z中的字符,则输出提示信息echo "你输入的不是数字"exit # exit命令用于退出目前的shell
fiif [ $[year % 4] -eq 0 ] && [ $[year % 100] -ne 0 ];then #根据用户输入,判断闰年echo "$year年是闰年" #能被4整除且不能被100整除的年份,是闰年
elif [ $[year % 400] -eq 0 ];then #能被400整除的年份,是闰年echo "$year年是闰年"
elseecho "$year年不是闰年"
fi
(8)给下列程序加上注释
#!/bin/bash
for i in {1..3} #for循环;用户有3次输入用户名与密码的机会
doread -p "请输入用户名:" user #read-p 后面跟提示信息,即在输入前打印提示信息read -p "请输入密码:" pass
if [ "$user" == 'tom' -a "$pass" == '123456' ];then
#若用户名与密码匹配,则执行下列语句echo "Login successful"exit # exit命令用于退出目前的shellfi
done
echo "Login Failed"
(9)打印斐波那契数列
程序源代码为:
#!/bin/bash #输入数字n显示斐波那契数列的前n项a=1 #第一项 b=1 #第二项 c=0 #中间变量,用来储存a的值 Fibonacci=0 #斐波那契数列的第n项 read -p "输入数字n,显示数列的前n项" n#如果n<=3则输出前三项 if [ "${n}" -le "3" ]; thencase ${n} in"1")Fibonacci=${a}echo -e "${Fibonacci}";;"2")Fibonacci=${a}echo -e "${Fibonacci}"echo -e "${Fibonacci}";;"3")Fibonacci=${a}echo -e "${Fibonacci}"echo -e "${Fibonacci}"Fibonacci=$((${a}+${b}))echo -e "${Fibonacci}"esac fi#如果n>=4,输出剩余的项 if [ "${n}" -ge "4" ]; thenFibonacci=${a}echo -e "${Fibonacci}"echo -e "${Fibonacci}"Fibonacci=$((${a}+${b}))echo -e "${Fibonacci}"for ((i=4; i<=${n}; i=i+1 ))doc=${a}a=${b}b=$((${c}+${b}))Fibonacci=$((${a}+${b}))echo -e "${Fibonacci}"done fi
运行截图为:
【实验总结】
通过本次实验,我对Shell更加熟悉。通过实验,我了解到:Shell脚本可以作为命令语言互动式地解释和执行用户输入的命令,还能够用来进行程序设计,它提供了定义变量和参数的手段以及丰富的过程控制结构。
在实验中,我体会到了Shell的灵活性。Shell程序基本语法较为简单,主要由开头部分、注释部分以及语句执行部分组成。它还可以提供说明与使用变量的功能。另外,在Shell中,所有变量的取值都是一个字符,我认为 这非常方便。Shell在开始执行时,就已经定义了一些与系统的工作环境相关的变量,如:HOME:用于保存注册目录的完全路径名;PATH:用于保存用冒号分隔的目录路径名,shell将按PATH变量中给出的顺序搜索这些目录,找到的第一个与命令名称一致的可执行文件将被执行。
此次实验,收获甚多,课下我会继续努力,多查资料,勤于练习!
【CentOS Linux 7】实验2【Shell编程及应用】相关推荐
- linux 程序实验总结,Linux实验报告(实验四) shell编程实验
实验四 shell编程实验(二) 班级:姓名:学号:上机时间:年月日 任课教师:实验教师:实验成绩: 一.实验目的 综合Linux常用命令和vi编辑器的使用,熟练掌握shell脚本编程. 二.实验注意 ...
- Linux知识点回顾之shell编程
Linux知识点回顾之shell编程 shell编程 1 基本介绍 1.1 Shell 脚本 1.2 Shell 环境 1.3 第一个shell编程 1.4 运行 Shell 脚本有两种方法: 1.5 ...
- linux系统shell讲解实验报告,《操作系统》课程实验报告 SHELL编程.doc
华南理工大学 <操作系统 SHELL编程 姓名: 余柳红 学号: 201330571011 班级: 13信息安全班 合作者: 无 指导教师: 贺小箭 实验概述[实验目的及要求] 实验目的: 熟悉 ...
- 【Linux系统管理】10 Shell 编程进阶篇
六 Shell 编程 6.1 正则表达式 6.1.1 概述 还记得我们在上一章说过正则表达式和通配符的区别(正则表达式用来在文件中匹配符合条件的字符串,通配符用来匹配符合条件的文件名)吗?其实这种区别 ...
- Linux高级命令和Shell编程
1.Linux高级命令 该章节的所有操作都在/export/data/shell目录进行,请提前创建该目录. mkdir -p /export/data/shell/ 1.1.重定向命令 1.重定向& ...
- 实验四 Shell编程
一.实验目的 1.掌握shell环境变量.管道.输入输出重定向使用方法: 2.掌握shell脚本建立和执行方法: 3.掌握shell脚本的基本结构: 4.掌握基本的shell编程方法. 二.实验环境: ...
- Linux 命令行与shell编程 第10章 构建基本脚本
本章内容 构建基本脚本 使用多个命令 创建shell脚本文件 现在我们已经介绍了Linux系统和命令行的基础知识,可以开始编程了.本章讨论编写shell脚本的基础知识.在开始编写自己的shell脚本大 ...
- 第13章代码《跟老男孩学习Linux运维:Shell编程实战》
本书历史上已出版最实战的Shell高级编程实战书籍,没有之一,和市面书籍不同,本书是作者经过18年的运维工作及教学工作后,创新类企业级实战书籍,适合所有学习及从事Linux相关工作的读者. <跟 ...
- Linux进阶之路———Shell 编程入门
引言 通过 Shell 编程的学习,铺平架构师道路上的一块大砖. Shell 在Linux 系统中的定位如下所示: 一.第一个 Shell 脚本 我们通过一个简单的 Shell 脚本来感受一下. 在 ...
- linux操作系统中的shell编程----基于头歌实践教学编写shell脚本测试结果
一.前言 今天,又要使用我的大学技能-写实验报告.linux操作系统课程实验课到了尾声,这是最后一次linux操作系统实验报告,我喜极而泣. 行了,废话不多说,我直接开始肝!!本实验是基于基于头歌实践 ...
最新文章
- vs目录(继承的值)配置
- nodejs express 路由与view创建多级目录
- Mysql一些维护命令
- 【数据结构与算法】之深入解析“组合总和”的求解思路与算法示例
- 78. 子集022(回溯法)
- linux 环境安装DBI和DBD_03
- oracle 列 连续,oracle中某列连续相同值的记录数统计(一个简单的例子)
- 没有计算机的一天英语作文带翻译,初一英语作文我的一天带翻译
- ModelArts黑科技揭秘|模型智能评估、诊断,让模型来个“体检
- eclipse中查怎样看某个方法调用了谁
- mysql 停从库_不停止 MySQL 服务增加从库的两种方式
- Win10 Nodejs搭建http-server注意点
- java list转json
- 几个支持 FreeSWITCH 的网络电话的安装与使用(linphone、MicroSIP、Sipdroid)
- 九型人格,工作中的好帮手.
- mysql类exadata功能_EXADATA智能扫描
- 差分相干解调 matlab,差分码PSK信号的相干解调系统仿真
- pycharm收费版和 免费版的区别
- 全国独一份!200万杭州人公积金可用支付宝刷脸提取,秒到账!
- 洛谷P1725 琪露诺(单调队列优化dp)
热门文章
- 汉字我在计算机中的处理过程,详细说明汉字在计算机中的处理流程以及汉字编码在处理过程中的转化关系...
- maya中英文切换插件_老司机都在用的30款maya常用插件
- java 编译 忽略错误_Maven在Java8下如何忽略Javadoc的编译错误详解
- php 单元测试 麻烦,php – 正确的单元测试
- canal解析mysql日志异常_利用Canal解析mysql binlog日志
- python typing typescript_将 python 数据转化为 TypeScript 格式
- tensorflow lstm 预测_图卷积神经网络GCN与递归结构RNN相结合的时间序列预测
- java异常什么时候抛出异常,java - 什么时候应该抛出IllegalArgumentException?
- java 热补丁_Android热补丁之AndFix原理解析
- 期末复习、化学反应工程科目(第一章)