欢迎来到装配图网! | 帮助中心 装配图网zhuangpeitu.com!
装配图网
ImageVerifierCode 换一换
首页 装配图网 > 资源分类 > DOC文档下载
 

习题07_Shell编程

  • 资源ID:107171348       资源大小:308KB        全文页数:11页
  • 资源格式: DOC        下载积分:15积分
快捷下载 游客一键下载
会员登录下载
微信登录下载
三方登录下载: 微信开放平台登录 支付宝登录   QQ登录   微博登录  
二维码
微信扫一扫登录
下载资源需要15积分
邮箱/手机:
温馨提示:
用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
支付方式: 支付宝    微信支付   
验证码:   换一换

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

习题07_Shell编程

【精品文档】如有侵权,请联系网站删除,仅供学习与交流习题07_Shell编程.精品文档.习题07_Shell编程一、单选1. 下面哪个命令是用来定义shell的全局变量(  D  )。A. exportfsB. aliasC. exportsD. export2在Shell脚本中,用来读取文件内各个域的内容并将其赋值Shell变量的命令是( D )。A. fold B. joinC. tr D. read3. 当字符串用双引号()括起来时,SHELL将( C )。A. 解释引号内的特殊字符 B. 执行引号中的命令C. 不解释引号内的特殊字符D. 结束进程4. 以下哪个环境变量表示当前路径( B )。A. PATH B. PWDC. HOME D. ROOT5. shell不仅是( 用户命令的解释器 ),它同时也是一种功能强大的编程语言,( bash )是Linux的缺省shell。6. 编写的Shell程序运行前必须赋予该脚本文件( 执行 )权限。7. 对于Shell脚本程序,若输入参数数量多于9个,则程序遍历每个参数可通过使用( shift )命令实现。8. 为脚本程序指定执行权的命令及参数是(  chmod a+x filename  )。9. 在shell编程时,使用方括号表示测试条件的规则是:方括号两边必有( 空格 )。10. 输入了Shell命令的部分字符后按( tab )键可补全其余部分。11改变命令提示符的环境变量是( PS1 )。11. grep -E 'Hhenr(y|ietta)' file的功能是:(在文件File中查找Henry、henry、Henrietta或 henrietta)。12. 如下为命令终端下的一个截图:则,以下两句的执行结果是:( the home path is $HOME )。path=the home path is $HOMEecho $path 13. 以下为程序名为prog的程序内容。则 sh prog a b c d的执行结果为( C )。set A B C Dshiftshiftecho $1三、简答1. 下面给出了一个SHELL程序,试对其行后有#(n)形式的语句进行解释,并说明程序完成的功能。#!/bin/shDIRNAME=ls /root | grep bak#(1)if -z "$DIRNAME" ; then#(2)mkdir /root/bak ; cd /root/bak#(3)fiYY=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的文件或目录#(2)判断1结果为空#(3)创建目录/root/bak并进入该目录#(4)获取当前时间的年月日#(5)按照年(2位)月(2位)日(2位)_etc方式构造压缩文件名#(6)压缩etc目录并保存在/root/bak中 6分程序功能:若/root/bak不存在则创建之,然后将/etc按日期打包保存于该目录中。2分2. 什么是位置变量?shell的变量类型有哪些种?答:位置变量是指命令行上传递给程序的参数。Shell变量可以分为:用户自定义变量、环境变量、位置变量、特殊变量3. 下面给出了一个SHELL程序,试对其行后有#(n)形式的语句进行解释,并说明程序完成的功能。#!/bin/bash #(1)dir=$1 #(2)if -d $dir #(3)then cd $dir #(4) for file in * doif -f $file #(5)then cat $file #(6)echo “end of file $file” fi done elseecho “bad directory name $dir” fi答:#(1)使用/bin/bash解释脚本#(2)将位置变量1赋值给变量dir#(3)如果dir所指为目录#(4)将当前目录改为dir#(5)如果循环变量file所指是普通文件#(6)显示文件file的内容 6分程序功能:若命令行参数是一个合法目录则显示该目录下所有普通文件的内容,否则显示错误的目录名信息。4. 试编写一个SHELL程序,该程序能接收用户从键盘输入的100个整数,然后求出其总和、最大值及最小值。答:#!/bin/shread maxmin=$maxsum=$maxi=1while $i lt 100do   read x sum=expr $sum + $x  if $max lt $x      then          max=$x fi if $ x lt $min      then          min=$x fi     i=expr $i + 1doneecho "sum = $sum ; max = $max min = $min "5.创建一个shell 脚本,它从用户那里接收10个数,并显示已输入的最大的数。参考程序:#! /bin/bashmax=0for(count=1 ; count <= 10 ; count = count+1)doecho -n "Enter number $count : "read valueif $max -lt $value thenmax=$valuefidone6. 有一普通用户想在每周日凌晨零点零分定期备份/user/backup到/tmp目录下,该用户应如何做?参考答案:(1)第一种方法:用户应使用crontab e 命令创建crontab文件。格式如下:0 0 * * sun cp r /user/backup /tmp(2)第二种方法:用户先在自己目录下新建文件file,文件内容如下:0 * * sun cp r /user/backup /tmp然后执行 crontab file 使生效。7.写一个shell 脚本,检查给出的串是否为回文(palindrome)。参考程序:#! /bin/bashecho "Enter string"read strlen=echo $str | wc -clen=expr $len - 1l=expr $len / 2ctr=1flag=0while test $ctr -le $ldoa=echo $str | cut -c$ctrb=echo $str | cut -c$lenif test $a -ne $bthen flag=1breakfictr=expr $ctr + 1len=expr $len - 1doneif test $flag -eq 0then echo "String is palindrome"else echo "String not a palindrome"fi8. 在UNIX/Linux系统中,环境变量是非常重要,在字符界面下试说明:(1) PATH变量的作用,如何得到PATH的值?(2) 在UNIX/Linux系统的超级用户的环境变量PATH中允许包含当前目录吗?(3) 若在超级用户的当前目录内有可执行文件mypro,如何执行它(写出执行时键盘输入内容)?(4) 如何使用该命令在后台执行(写出执行时键盘输入内容)?答:(1) PATH为命令搜索路径,可用echo $PATH命令显示;(2)UNIX/Linux的PATH变量内不允许包含当前路径(.);(3)./mypro;(4)./mypro &9. 设计一个shell程序计算n的阶乘。要求:(1) 从命令行接收参数n;(2) 在程序开始后立即判断n的合法性,即是否有参数,若有是否为正整数,若非法请给错误提示;(3) 最后出计算的结果。参考代码:#!/bin/shif $# -eq 0 ; then echo -e "$0 no Params.an" exit 0; fix=echo $1 | awk '/:digit:/ print $0 ' if "x$x" != "x" ; then echo -e "Input: $* error!a" exit 1; fifact=1;tmp=1while $tmp -le $1 dofact=$(fact*tmp);tmp=$(+tmp);doneecho "fact=$fact"4Shell程序中,对用户变量赋值有哪些方式?简要说明每种赋值方式的使用方法。(1)等号赋值1)在等号前后均不能有空格。2)当需要将一个包含空格的字符串赋给用户变量时,应用单引号将该字符串括起来。(2)键盘赋值由read命令来实现的。用法为:read 用户变量名当shell程序执行到该行时,将等待用户从键盘输入,当用户按下回车键时shell把你输入的内容赋给用户变量。(3)命令替换赋值用法为:用户变量=命令该语句将首先执行反向单引号之间的命令,然后将其执行后输出的内容赋给该用户变量,在这种赋值方式中,等号前后同样不能有空格,而且必须用反向单引号(即重音号)把命令括起来。10. 编写1个弹出式菜单的shell程序并实现其简单的菜单功能:* MENU * 1.copy 2.rename * 3.remove 4.find * 5.exit * 即用户按下数字1,则提示用户输入源和目的文件名后执行复制;输入数字2,则提示用户输入要更名的文件或目录后执行更名操作;输入数字3,则提示用户输入要删除的文件并执行删除操作;输入数字4,则提示用户输入要查找的文件并执行查找操作;输入数字5,则退出该菜单shell程序的执行。#! /bin/sh -clearwhile 0 ; doecho "*"echo " menu "echo " 1.copy 2.rename "echo " 3.remove 4.find "echo " 5.exit "echo "*"echoecho -n " select:"read choiceechocase $choice in1)echo -n "source file:"read srcechoecho -n "destination fold:"read descp -arf $src $desif $?; thenecho "copy sucessful!"elseecho " copy fail"fi;2) echo -n "the file to be renamed:"read srcechoecho -n "the new file:"read desmv $src $desif $?; thenecho "rename sucessful!"elseecho " rename fail"fi;3) echo -n "the file to be removed:"read srcrm -rf $srcif $?; then echo "remove sucessful!"elseecho " remove fail"fi; 4)echo -n "the file to be found:"read srcfind $HOME -name $src;5) exit;*) echo "Invalid option"esacdone12. 编写shell程序,实现自动删除50个用户账号的功能。账号名为stud1至stud50#!/bin/shi=1while $i -le 50 douserdel -r stud$ii=$($i+1 )doneecho "remove sucessful!"elseecho " remove fail"fi;3.用shell编写小九九乘法表程序,程序执行结果如下:#! /bin/sh for i in 1 2 3 4 5 6 7 8 9dofor j in 1 2 3 4 5 6 7 8 9doif ( test $j -le $i ) thenecho -ne expr $i * $j "t"elseechobreak fi donedone13. 什么是Shell,它的作用是什么?答:shell,就是命令行解释程序,它提供了用户与操作系统之间基于命令行的交互界面。用户命令行输入命令,由SHELL对它们做出解释,并将其送往操作系统去执行。 14用Shell编程,判断一文件是不是字符设备文件,如果是将其拷贝到 /dev 目录下。参考程序:#!/bin/shFILENAME=echo “Input file name:”read FILENAMEif -c "$FILENAME" thencp $FILENAME /devfi 15请下列shell程序加注释,并说明程序的功能和调用方法。#!/bin/sh# /etc/rc.d/rc.httpd# Start/stop/restart the Apache web server.# To make Apache start automatically at boot, make this# file executable: chmod 755 /etc/rc.d/rc.httpdcase "$1" in'start')/usr/sbin/apachectl start ;'stop')/usr/sbin/apachectl stop ;'restart')/usr/sbin/apachectl restart ;echo "usage $0 start|stop|restart" ;esac参考答案:(1)程序注释#!/bin/sh 定义实用的shell# /etc/rc.d/rc.httpd 注释行,凡是以星号开始的行均为注释行。# Start/stop/restart the Apache web server.# To make Apache start automatically at boot, make this# file executable: chmod 755 /etc/rc.d/rc.httpdcase "$1" in #case结构开始,判断“位置参数”决定执行的操作。本程序携带一个“位置参数”,即$1'start') #若位置参数为start/usr/sbin/apachectl start ; #启动httpd进程'stop') #若位置参数为stop/usr/sbin/apachectl stop ; #关闭httpd进程'restart') #若位置参数为stop/usr/sbin/apachectl restart ; #重新启动httpd进程*) #若位置参数不是start、stop或restart时echo "usage $0 start|stop|restart" ; #显示命令提示信息:程序的调用方法esac #case结构结束(2)程序的功能是启动,停止或重新启动httpd进程(3)程序的调用方式有三种:启动,停止和重新启动。3设计一个shell程序,添加一个新组为class1,然后添加属于这个组的30个用户,用户名的形式为stdxx,其中xx从01到30。参考答案:#!/bin/sh i=1groupadd class1while $i -le 30 doif $i -le 9 ;thenUSERNAME=stu0$ielseUSERNAME=stu$ifiuseradd $USERNAME mkdir /home/$USERNAMEchown -R $USERNAME /home/$USERNAMEchgrp -R class1 /home/$USERNAME i=$($i+1)done4编写shell程序,实现自动删除50个账号的功能。账号名为stud1至stud50。参考程序:#!/bin/shi=1while $i -le 50 douserdel -r stud$ii=$($i+1 )done5某系统管理员需每天做一定的重复工作,请按照下列要求,编制一个解决方案:(1)在下午4 :50删除/abc目录下的全部子目录和全部文件;(2)从早8:00下午6:00每小时读取/xyz目录下x1文件中每行第一个域的全部数据加入到/backup目录下的bak01.txt文件内;(3)每逢星期一下午5:50将/data目录下的所有目录和文件归档并压缩为文件:backup.tar.gz;(4)在下午5:55将IDE接口的CD-ROM卸载(假设:CD-ROM的设备名为hdc);(5)在早晨8:00前开机后启动。参考答案: 解决方案:(1)用vi创建编辑一个名为prgx的crontab文件;(2)prgx文件的内容:50 16 * * * rm -r /abc/*0 8-18/1 * * * cut -f1 /xyz/x1 >> /backup/bak01.txt50 17 * * * tar zcvf backup.tar.gz /data55 17 * * * umount /dev/hdc(3)由超级用户登录,用crontab执行 prgx文件中的内容:rootxxx:#crontab prgx;在每日早晨8:00之前开机后即可自动启动crontab。6设计一个shell程序,在每月第一天备份并压缩/etc目录的所有内容,存放在/root/bak目录里,且文件名为如下形式yymmdd_etc,yy为年,mm为月,dd为日。Shell程序fileback存放在/usr/bin目录下。参考答案:(1)编写shell程序fileback:#!/bin/shDIRNAME=ls /root | grep bakif -z "$DIRNAME" ; thenmkdir /root/bakcd /root/bakfiYY=date +%yMM=date +%mDD=date +%dBACKETC=$YY$MM$DD_etc.tar.gztar zcvf $BACKETC /etcecho "fileback finished!"(2)编写任务定时器:echo "0 0 1 * * /bin/sh /usr/bin/fileback" > /root/etcbakcroncrontab /root/etcbakcron或使用crontab -e 命令添加定时任务:0 1 * * * /bin/sh /usr/bin/fileback7有一普通用户想在每周日凌晨零点零分定期备份/user/backup到/tmp目录下,该用户应如何做?参考答案:(1)第一种方法:用户应使用crontab e 命令创建crontab文件。格式如下:0 0 * * sun cp r /user/backup /tmp(2)第二种方法:用户先在自己目录下新建文件file,文件内容如下:0 * * sun cp r /user/backup /tmp然后执行 crontab file 使生效。8.设计一个Shell程序,在/userdata目录下建立50个目录,即user1user50,并设置每个目录的权限,其中其他用户的权限为:读;文件所有者的权限为:读、写、执行;文件所有者所在组的权限为:读、执行。参考答案: 建立程序 Pro16如下:#!/bin/shi=1while i -le 50 doif -d /userdata ;thenmkdir -p /userdata/user$ichmod 754 /userdata/user$iecho "user$i"let "i = i + 1" (或i=$($i1)elsemkdir /userdatamkdir -p /userdata/user$ichmod 754 /userdata/user$iecho "user$i"let "i = i + 1" (或i=$($i1)fidone

注意事项

本文(习题07_Shell编程)为本站会员(豆浆)主动上传,装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知装配图网(点击联系客服),我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!