习题07_Shell编程电子教案
ch7 Shell编程

如果文件不具备可执行权限,那么可以用bash命令 来执行该文件: # bash /root/date 或 # bash < /root/date
7
三、显示欢迎界面的Shell程序
echo “set si”>>~/.vimrc
设置自动缩进
echo “set ts=4”>>~/.vimrc
设置缩进量为4字符 echo “syntax on”>>~/.vimrc 语法加亮
# echo $?
23
三、文件测试
-d 对象存在且为目录,则返回值为“是”。
-f 对象存在且为文件,则返回值为“是”。
-L 对象存在且为符号连接,则返回值为“是”。
-r 对象存在且可读,则返回值为“是”。
-s 对象存在且长度非0,则返回值为“是”。 -w 对象存在且可写,则返回值为“是”。 -x 对象存在且可执行,则返回值为“是”。 ! 测试条件的否定。
8
三、显示欢迎界面的Shell程序
9
三、显示欢迎界面(使用Shell函数)
Shell程序在子Shell中运行。
Shell程序中的函数与主程序在同一Shell中执 行,在函数中可以对主程序中的变量进行修改。
10
7.2 Shell变量
每个用户登录系统后,都会有一个专用的运行环
境,这个环境实际上就是一组环境变量的定义。
echo $m
28
例:从键盘输入两数,求其和。
29
一、条件判断
例:从键盘输入两个数,按由小到大的顺序输出。
红线处要有空格
30
实验七 shell编程实验

实验七 LINUX-Shell编程一.实验名称:Shell 简单编程实验和较复杂的考勤模拟shell程序设计二.实验目的:理解Shell程序的设计方法;熟悉Shell程序的编辑、运行、调试方法与过程。
三.实验内容:考勤模拟Shell程序设计用shell设计一个模拟考勤程序,实现如下功能选择界面:1:上班签到2:下班签出3:缺勤信息查阅考勤程序运行后,提示用户输入上述功能选择,并验证用户输入的用户名和密码;用户信息保存在userinfo.dat中。
如果是上班签到,记录签到信息,如果签到时间大于上午8时,则提示用户迟到,并记录该迟到信息到check.dat中。
如果是下班签出,记录签出信息,如果签出时间小于下午6时,则提示用户早退,并记录该早退信息到check.dat。
如果用户选择确信信息查询,则将check.dat中对应的用户迟到早退的信息查询出来并显示。
用户选择功能执行完,Shell程序继续回到功能选择界面等待下一个用户进行操作。
四.实验要求:1、掌握Shell程序的编辑、运行、调试方法2、完成实验内容要求的功能五.简单SHELL实验:请在vi中逐一编辑并执行以下6个shell脚本程序1.编写一个简单的回显用户名的shell程序。
#vi dat#!/bin/bash#filename:datecho "Mr.$USER,Today is:"echo `date`echo Wish you a lucky day!#chmod +x dat#./dat2.使用if-then语句创建简单的shell程序。
#vi bbbb#!/bin/bash#filename:bbbbecho -n "Do you want to continue: Y or N"read ANSWERif [ $ANSWER=N -o $ANSWER=n ]thenexitfi#chmod +x bbbb#./bbbb3.使用if-then-else语句创建一个根据输入的分数判断是否及格的shell程序。
项目七

上一页 下一页 返回
启动Shell 任务一 启动
使用Bash 执行 (3)最常用的一种方法是使当前的 )最常用的一种方法是使当前的Shell 使用 脚本,而不管当前的Shell 版本是什么。 版本是什么。 脚本,而不管当前的 #! /bin/bash
上一页 返回
编写一个简单的Shell程序 任务二 编写一个简单的 程序
(1)启动Shell,并在$提示符后输入以下语句:cat > )启动 ,并在 提示符后输入以下语句: 提示符后输入以下语句 testfile(按Enter 键)。 ( (2)在光标处输入以下数据(必须要换行)。 )在光标处输入以下数据(必须要换行)。 zhang 1 li 2 wang 1 xu 1
【任务描述】 任务描述】
用以下内容建立一个名叫hello 的文件,并执行它,查看结 的文件,并执行它, 用以下内容建立一个名叫 果。 echo "hello," echo "world!" echo "this is my first Shell file."
【任务实施】 任务实施】
(1)打开 编辑器。 )打开vi 编辑器。 所示,输入语句,并保存文件, (2)按图7−1 所示,输入语句,并保存文件,文件名为 ) hello。 。 (3)输入以下语句,执行这个文件。 )输入以下语句,执行这个文件。
上一页 下一页 返回
任务三 统计文件中的单词数
xu 1 yang 2 5 zhang m li 2 wang m xu m yang 2
【理论知识】 理论知识】
1. 标准输入 输出文件 标准输入/输出文件 每一个进程都有3 个特殊的文件描述指针: 在 Linux 中,每一个进程都有 个特殊的文件描述指针:
shell编程课程设计

shell编程课程设计一、课程目标知识目标:1. 理解Shell编程的基本概念,掌握Shell脚本的结构和语法;2. 学会使用常见Shell命令,如文件操作、文本处理等;3. 掌握Shell编程中的变量、循环、条件判断等基本元素;4. 了解Shell脚本的执行过程和调试方法。
技能目标:1. 能够编写简单的Shell脚本,实现文件管理和系统监控等基本功能;2. 能够运用Shell脚本解决实际问题,如批量处理文件、自动化部署等;3. 学会使用Shell脚本进行数据处理和分析,提高工作效率;4. 培养学生独立思考和解决问题的能力,提高编程实践技能。
情感态度价值观目标:1. 培养学生对计算机编程的兴趣和热情,激发学习主动性;2. 培养学生良好的编程习惯,注重代码规范和注释;3. 培养学生团队协作精神,学会分享和交流编程经验;4. 增强学生信息安全意识,遵循法律法规,合理使用计算机资源。
课程性质:本课程为高年级选修课程,旨在帮助学生掌握Shell编程技能,提高计算机操作水平。
学生特点:学生具备一定的计算机操作基础,对编程有一定了解,但实践经验不足。
教学要求:结合学生实际情况,注重理论与实践相结合,强调动手实践,培养学生实际编程能力。
通过本课程的学习,使学生能够独立完成简单的Shell脚本编写,解决实际问题。
二、教学内容1. Shell编程概述- Shell的概念与作用- 常见Shell类型及选择2. Shell脚本基础- 脚本结构和执行方式- 变量定义与使用- 传递参数和特殊变量- 环境变量配置与应用3. 常用Shell命令- 文件操作命令(如:ls、cp、mv等)- 文本处理命令(如:grep、sed、awk等)- 管道和重定向4. 控制结构- 条件判断(if、case)- 循环结构(for、while)5. 函数与模块- 函数的定义与调用- 模块化编程方法6. Shell脚本调试与优化- 常见错误类型及处理- 调试技巧与优化方法7. 实践项目- 文件批量重命名- 自动化部署脚本- 系统监控与报警教学内容安排与进度:第1周:Shell编程概述及环境配置第2周:Shell脚本基础与变量使用第3周:常用Shell命令与文本处理第4周:控制结构(if、for、while)第5周:函数与模块化编程第6周:Shell脚本调试与优化第7-8周:实践项目及总结教学内容与课本关联性:本课程内容紧密围绕教材中Shell编程相关章节,结合实际案例进行拓展,确保学生能够系统掌握Shell编程知识。
SHELL编程_教案

SHELL编程基本概念:计算机为我们工作的是硬件,控制硬件的是计算机内核,我们使用者是利用Shell控制一些kernel提供的工具(Utility)来操控硬盘替我们正确工作。
Linux可以使用的shell:/bin/sh (已经被/bin/bash取代)/bin/bash (Linux预设的bash,是GNU计划中的)/bin/ksh (Kornshell由AT&A Bell lab开发的,兼容于bash)/bin/tcsh (整合C shell,提供更多的功能)/bin/csh (被/bin/tcsh取代)/bin/zsh (由ksh发展过来的,提供更多的功能)命令补全功能:Tab,按一次能把唯一匹配的补全,如果按两次会把所有能匹配的全部打印出来命令取别名功能:alias lm = 'ls -alLinux提供2种命令:内部命令的执行速度比外部命令要快的多shell的内部命令如:echo shell内部本身提供的命令shell的外部命令如:ls shell本身不提供,但它是通过shell调用/bin/ls 在解释内部命令是shell不需要创建子进程。
而外部命令需要创建单独的新进程,从而加大了系统的开销。
外部命令就是路径搜索下可以找到的,执行会起子进程。
某些shell内部命令与系统命令具有相同的名字,但其实现方式不一样如shell内部命令echo 与系统命令/bin/echo名字完全一样功能也相同如:[root@am ~]# echo "test echo string"test echo string[root@am ~]# /bin/echo "test echo string use system command"test echo string use system command使用type命令,可以查看该命令是内部命令还是外部命令-t 显示意义缺省参数显示是内部还是外部*系统命令在/bin目录下,若把/bin下的该命令文件删除后,该命令仍然好用,则为内部命令。
第7章 Shell编程

10
Linux操作系统基础
南阳理工学院
1.创建文件
在/root目录下使用vi编辑器创建文件date,该文件内 容如下,共有3个命令 #!/bin/bash #filename:date echo “Mr.$USER ,Today is:” date
echo Wish you a lucky day!
空格,则必须使用引号括起来)
34
Linux操作系统基础
南阳理工学院
例:
# n1=11
# n2=22
# echo $n1
# echo $n2
# export n1 # bash # echo $n1 # echo $n2
35
Linux操作系统基础
南阳理工学院
7.2.3 特殊变量
某些变量在一开始执行脚本时就被设定 且不再改变,它们被称为特殊变量。 用户只能根据shell的定义来使用这些变 量,而不能重新定义它们。 所有的特殊变量都是由$和另一个符号 组成的。
注释,直到这一行的结束,建议在程序中使用注
释。
如果使用注释,那么即使相当长的时间内没
有使用该脚本,也能在很短的时间内明白该脚本
的作用及工作原理。
9
Linux操作系统基础
南阳理工学院
7.1.2 一个简单Shell程序的创建过程
Shell程序就是放在一个文件中的一系列Linux命 令和实用程序,在执行的时候,通过Linux系统 一个接着一个地解释和执行每个命令,这和 Windows系统下的批处理程序非常相似。
Linux操作系统基础南阳理工学院来自Linux操作系统基础
第7章 Shell编程
1
Linux操作系统基础
南阳理工学院
cj第八章(2)Shell编程PPT课件

但是两者也有区别。因为单引号的屏蔽功能是最强,所以它括住的 字符或字串只具有文字意义;而双引号括住的字符或字串允许特殊字符 保持其特殊意义。当给变量中要引用其它变量时,就只能使用双引号。 如var=“test String”;newvar=‘Value of var is $var’ 与 newvar=“Value of var is $var”;分别用echo $ newvar 查看结果,有 什么不同。
2、通配符 通配符可以使用户方便地描述文件。
常用的通配符及含义:
通配符
含义
*
匹配任何不以圆点(·)开头、不含斜线(/)的字符
串,包括空字符串;
?
匹配任何不以圆点(·)开头或不是斜线(/)的单个
字符;
[.,-,!]
按照范围、列表或不匹配等形式匹配指定的字符;
参考示例:
命令
含义
ls *
列出当前目录下的所有文件、目录及该目录
每添加一个新用户时,Linux 都会在 /home 目录下添加一个 与用户登录名相同的目录,以便该用户可以存放属于自己的文件, HOME 变量存有该目录名。
另外、通过分析 .bash_profile 文件,可以看到文件中有如下 行:
PATH=$PATH:$HOME/bin 因此、只要在自己的主目录下建立 bin 目录,并把编辑好的 shell 文件存在该目录下即可。
Linux系统应用
第七讲 Shell 编程
பைடு நூலகம்
第七讲 Shell 编程
一、 Shell 程序的编辑与运行
1、编辑 编写 Shell 程序可以用 Linux 下的任意一种文本编辑器,字
《shell编程初步》PPT课件

$ ./ vartest4 ?
export -p
❖ 列出所有变量的清单
(….) 和{...;}
()是对一串命令重新开一个子shell进行执行 {}对一串命令在当前shell执行 ()和{}都是把一串的命令放在括号里面,并且
命令之间用;号隔开 ()最后一个命令可以不用分号 {}最后一个命令要用分号
比较:$ echo “$lines” ,echo $lines, echo ‘lines’
练习
❖ 在终端上显示
<<< echo $x >>> displays the value of x,which is $x ❖ 显示的时候,第2个$x的值应该被替换,比如如果x=3,显示: <<< echo $x >>> displays the value of x,which is 3
函数
❖ name () { command;…command; } ❖ 函数只在定义它的shell中有效,不能被传递
到子shell. ❖ $ nu () { who | wc –l; } ❖ $ nu
❖
❖ $ cat fun1.sh
例子1
❖ $ ./fun1.sh
函数文件
❖ $ cat funmain.sh ❖ $. ./funmain.sh ❖ $ print ❖ $ hello
${n}
❖ $1,……$9 ,${10},${11}
shift
❖ 把位置参数左移 ❖ shift n 把位置参数左移n位
❖ cat _shift #!/bin/sh
while [ "$1" != "" ]; do echo "$1" shift
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
YY=`date +%y`;MM=`date +%m`;DD=`date +%d`#(4)
BACKETC=$YY$MM$DD_etc.tar.gz#(5)
tar zcvf $BACKETC /etc#(6)
echo "fileback finished!"
答:#(1)获取/root中名称包含bak的文件或目录
max=0
for((count=1 ; count <= 10 ; count = count+1))
do
echo -n "Enter number $count : "
read value
if [ $max -lt $value ]
then
max=$value
fi
done
6.有一普通用户想在每周日凌晨零点零分定期备份/user/backup到/tmp目录下,该用户应如何做?
2.什么是位置变量?shell的变量类型有哪些种?
答:位置变量是指命令行上传递给程序的参数。
Shell变量可以分为:用户自定义变量、环境变量、位置变量、特殊变量
3.下面给出了一个SHELL程序,试对其行后有#(n)形式的语句进行解释,并说明程序完成的功能。
#!/bin/bash #(1)
dir=$1 #(2)
三、简答
1.下面给出了一个SHELL程序,试对其行后有#(n)形式的语句进行解释,并说明程序完成的功能。
#!/bin/sh
DIRNAME=`ls /root | grep bak`#(1)
if [ -z "$DIRNAME" ] ; then#(2)
mkdir /root/bak;cd /root/bak#(3)
if [ -d $dir ] #(3)
then
cd $dir #(4)
for file in *
do
if [-f $file ] #(5)
then
cat $file #(6)
echo“end of file $file”
fi
done
else
echo“bad directory name $dir”
fi
10.输入了Shell命令的部分字符后按(tab)键可补全其余部分。
11.改变命令提示符的环境变量是(PS1)。
11.grep -E '[Hh]enr(y|ietta)' file的功能是:(在文件File中查找Henry、henry、Henrietta或henrietta)。
12.如下为命令终端下的一个截图:
then
max=$x
fi
if [$ x–lt $min]
then
min=$x
fi
i=`expr $i+1`
done
echo "sum = $sum; max= $max min= $min"
5.创建一个shell脚本,它从用户那里接收10个数,并显示已输入的最大的数。
参考程序:
#! /bin/bash
则,以下两句的执行结果是:(the home path is $HOME)。
path=‘the home path is $HOME’
echo $path
13.以下为程序名为prog的程序内容。则sh prog a b c d的执行结果为(C)。
set A B C D
shift
shift
echo $1
答:#(1)使用/bin/bash解释脚本
#(2)将位置变量1赋值给变量dir
#(3)如果dir所指为目录
#(4)将当前目录改为dir
#(5)如果循环变量file所指是普通文件
#(6)显示文件file的内容6分
程序功能:若命令行参数是一个合法目录则显示该目录下所有普通文件的内容,否则显示错误的目录名信息。
参考答案:
(1)第一种方法:
用户应使用crontab –e命令创建crontab文件。格式如下:
0 0 * * sun cp –r /user/backup /tmp
(2)第二种方法:
用户先在自己目录下新建文件file,文件内容如下:
0 * * sun cp –r /user/backup /tmp
6.编写的Shell程序运行前必须赋予该脚本文件(执行)权限。
7.对于Shell脚本程序,若输入参数数量多于9个,则程序遍历每个参数可通过使用(shift)命令实现。
8.为脚本程序指定执行权的命令及参数是(chmod a+x filename)。
9.在shell编程时,使用方括号表示测试条件的规则是:方括号两边必有(空格)。
C.trD.read
3.当字符串用双引号(’’)括起来时,SHELL将(C)。
A.解释引号内的特殊字符B.执行引号中的命令
C.不解释引号内的特殊字符D.结束进程
4.以下哪个环境变量表示当前路径(B)。
A.PATHB.PWD
C.HOMED.ROOT
5.shell不仅是(用户命令的解释器),它同时也是一种功能强大的编程语言,(bash)是Linux的缺省shell。
#(2)判断1结果为空
#(3)创建目录/root/bak并进入该目录
#(4)获取当前时间的年月日
#(5)按照年(2位)月(2位)日(2位)_etc方式构造压缩文件名
#(6)压缩etc目录并保存在/root/bak中6分
程序功能:若/root/bak不存在则创建之,然后将/etc按日期打包保存于该目录中。2分
习题07_Shell编程
习题07_Shell编程
一、单选
1.下面哪个命令是用来定义shell的全局变量(D)。
A. exportfsB. alias
C. exportsD. export
2.在Shell脚本中,用来读取文件内各个域的内容并将其赋值Shell变量的命令是(D)。
A.foldB.join
然后执行crontab file使生效。
7.写一个shell脚本,检查给出的串是否为回文(palindrome)。
参考程序:
#! /bin/bash
echo "Enter stringo $str | wc -c`
len=`expr $len - 1`
4.试编写一个SHELL程序,该程序能接收用户从键盘输入的100个整数,然后求出其总和、最大值及最小值。
答:#!/bin/sh
read max
min=$max
sum=$max
i=1
while [$i–lt 100]
do
read x
sum=`expr $sum + $x`
if [$max–lt $x]