ImageVerifierCode 换一换
格式:DOCX , 页数:22 ,大小:29.73KB ,
资源ID:17359420      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/17359420.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(shell脚本练习题Word格式.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

shell脚本练习题Word格式.docx

1、 (提示:for FILE in /var/*;或for FILE in ls /var;) Hello,log 3.统计/var目录下共有多个文件,并显示出来 答案: cd /var for I in ls /var/*;hello $Ithe number of files is $num练习三: 1.设定变量file的值为/etc/passwd 2.使用循环读取文件/etc/passwd的第2,4,6,10,13,15行,并显示其内容(nirng) 3.把这些行保存至/tmp/mypasswd文件中 for I in 2 4 6 10 13 15; exec 3/tmp/mypasswd

2、 line=head -$I $file | tail -1$line &3-练习四:写一个(y )脚本传递两个(lin )整数给脚本,让脚本分别计算并显示这两个整数的和,差,积,商答案如下:vim test.sh #!first number $1 (表示输出第一个数)echo second number $2 (表示(biosh)输出第二个数) $($1+$2) (输出两数之和)$1-$2 (输出两数之差)$1*$2 (输出两数之积)$1/$2 (输出两数之商) :wq (表示保存并退出vi编辑器) chmod +x test.sh (给test.sh执行(zhxng)的权限) ./tes

3、t.sh 2 3 (传递两个参数并执行脚本作业(zuy)一:写一个脚本: 1.创建目录/tmp/scripts 2.切换工作目录至此目录中 3.复制/etc/pam.d目录至当前目录,并重命名为test4.将当前目录的test及其里面的文件和子目录的属主改为redhat 5.将test及其子目录中的文件的其它用户的权限改为没有任何权限答案:mkdir -v /tmp/scripts cd /tmp/scripts cp -r /etc/pam.d ./test chown -R redhat ./test chmod -R o=- ./test作业二: 1.显示当前系统日期和时间,而后创建目录

4、/tmp/lstest2.切换工作目录至/tmp/lstest 3.创建(chungjin)目录a1d,b56e,6test 4.创建(chun)空文件xy,x2y,732 5.列出当前目录下以a,x或者6开头(ki tu)的文件或目录 6.列出当前目录下以字母(zm)开头,后跟一个任意数字,而后跟任意长度字符的文件或目录答案(d n):datemkdir -pv /tmp/lstest cd /tmp/lstestmkdir a1d b56e 6testtouch xy x2y 732 ls ax6* ls :alpha:digit:* 作业三: 添加10个用户user1到user10,但要

5、求只有用户不存在的情况下才能添加 for I in seq 1 10; cut -d: -f1 /etc/passwd |grep user$I 2/tmp/etc.err | useradd user$I作业四: 通过ping命令测试192.168.0.151到192.168.0.254之间的所有主机是否在线 如果在线,就显示“ip is up” 如果不在线,就显示“ip is down” for I in seq 151 254; ping -c1 -w1 192.168.0.$I &/dev/null &192.168.0.$I is up |192.168.0.$I is down例题

6、:shell1.sh 显示日期和时间。echo “current time is date” /date要加反引号shell2.sh 显示文件名,并显示位置(wi zhi)参数(执行时带一个(y )参数)。($0是一个(y )特殊的变量,它的内容(nng)是当前这个shell程序(chngx)的文件名;$1是一个位置参数,位置参数之间用空格分隔,shell取第一个位置参数替换程序文件中的$1,第二个替换$2,依次类推。echo “the program name is $0” /$0是一个特殊的变数echo “the first para is $1” /$1是一个位置参数echo “the

7、program exit” /执行时带一个参数 如./shell2.sh abcdshell3.sh 判断并显示位置参数 #! if -d “$1”;then echo “$1 is directory ,existed” else echo “$1 does not exist ,now create it” mkdir $1 echo “$1 is created” fi /执行时带一个参数shell4.sh 问候用户 user=whoami case $user in teacher) echo “hello teacher”; root) echo “hello root”; *) e

8、cho “hello $user,welcome” esac1、求1+2+3+.+100的和是?SUM=0I=0while $I -le 100 SUM=$(SUM+I) I=$(I+1)done由1+2+3+.+100的和是:$SUM2、(基训十一(ShY) 在根目录下有四个文件(wnjin)m1.txt,m2.txt,m3.txt,m4.txt,用Shell编程,实现自动(zdng)创建m1,m2,m3,m4四个目录(ml),并将m1.txt,m2.txt,m3.txt,m4.txt四个文件分别拷贝到各自(gz)相应的目录下。cd /touch m1.txt m2.txt m3.txt m

9、4.txtI=1 while $I -le 4 do mkdir m$I cp m$I.txt m$I3、(基训十二) 编写一个名为myfirstshell.sh的脚本,它包括以下内容。a) 包含一段注释,列出您的姓名、脚本的名称和编写这个脚本的目的。b) 问候用户。c) 显示日期和时间。d) 显示这个(zh ge)月的日历。e) 显示(xinsh)您的机器名。f) 显示(xinsh)当前这个操作系统的名称和版本。g) 显示父目录中的所有文件(wn)的列表。h) 显示(xinsh)root正在运行的所有进程。i) 显示变量TERM、PATH和HOME的值。j) 显示磁盘使用情况。k) 用id命

10、令打印出您的组ID。m) 跟用户说“Good bye”# 09嵌入 5号 贾德进 myfirstshell.sh shell的简单编程user=whoamicase $user inroot)hello rootteacher)hello teacher*)hello $user,welcomeesac日期和时间: date本月的日历: cal本机的机器名:uname -n当前这个操作系统的名称和版本:uname -s;uname -r父目录中的所有文件的列表:ls ./root正在运行的所有进程: ps -u root变数TERM的值:$TERM变数PATH的值:$PATH变数HOME的值:

11、$HOME磁盘的使用情况:df用id命令打印出你的组ID:id -gGood bye!4、(基训十三) 设计(shj)一个Shell程序(ch),在/userdata目录(m)下建立50个目录(m),即user1user50,并设置(shzh)每个目录的权限为 rwxr-xrcd /userdataI=1while $I -le 50 mkdir -p userdata/user$I chmod o-x user$I 5、(基训十四) 编写shell程序,实现自动删除50个用户账号的功能。账号名为stud1至stud50。mkdir -p userdata/user$I chmod o-x u

12、ser$II=$(I+1)6、(基训十四) 设计一个shell程序,备份并压缩/etc目录的所有内容,存放在/root/bak目录里,且文件名为如下形式yymmdd_etc,yy为年,mm为月,dd为日。DIRNAME=ls |root|grep bak if -z $DIRNAME ; then mkdir /root/bak cd /root/bakfiYY=date + %yMM=date + %mDD=date + %dtar czvf $YY$MM$DD_etc.gz /etcetc bak finshied7、(基训十四) 某系统管理员需每天做一定的重复工作,请按照下列要求,编制(

13、binzh)一个解决方案:(1)在下午(xiw)4 :50删除(shnch)/abc目录(m)下的全部子目录和全部文件;(2)下午(xiw)5:50将/data目录下的所有目录和文件归档并压缩为文件:backup.tar.gz;(3)在下午5:55将IDE接口的第二个逻辑分区卸载。/ 采用: vi pram.cron#(1) 在下午4:50删除/abc目录下的全部子目录和全部文件;50 16 * rm -rf /abc/*#(2) 下午5:50将/data目录下的所有目录和文件归档并压缩为文件:backup.tar.gz;50 17 * tar czvf back.tar.gz /data#(

14、3) 在下午5:55将IDE接口的第二个逻辑分区卸载.55 17 * umount /dev/hda6/ 执行:crontab pram.cron=设计一个Shell程序,在/userdata目录下建立50个目录,即user1user50,并设置每个目录的权限,其中其他用户的权限为:读;文件所有者的权限为:读、写、执行;文件所有者所在组的权限为:读、执行。程序实现及注释如下: /bin/bash#adddir.shi=1#while循环while $i -le 50 #利用 test命令 -d /userdata :判断/userdata是否存在,如果存在直接创建子目录,不#存在先创建/use

15、rdata再创建子目录。if -d /userdata #mkdir -p的意思是:无论(wn)父目录/userdata存在与否,都会创建/userdata/user$i mkdir -p /userdata/user$i else mkdir /userdata mkdir -p /userdata/user$i#根据题目(tm)的意思:/userdata/user$i应该是具有754权限,所以利用chmod赋权限。chmod 754 /userdata/user$ii=$($i+1)函数(hnsh)in_path:判断传入文件是否(sh fu)可执行,若可执行(且存在(cnzi)返回0,

16、否则返回1;分析:为测试传入文件是否在PATH所有的目录中,需取得PATH中的每个路径,可用循环,但需要设定环境中的分隔符(借助环境变量IFS)为 PATH中的分隔符冒号”:” 注:$IFS 输入分隔符. 当shell读取输入数据的时候,会把一组字符看做是单词之间的分隔字符,它们通常是空格,制表符,和换行符.函数调用方式为 : in_path filenamein_path()cmd=$1 # $1为函数的参数1,以此类推retval=1 #定义返回值变量oldIFS=$IFS IFS=: #设置新的IFS,并保存原来的以恢复使用for directory in $PATH #for循环结构二

17、: for in if -x directory/$cmd ; then #if条件语句之 同行表示 以分号隔开 retval=0 # -x 判断文件有是否有可执行权限 done IFS=$oldIFS #恢复原来IFS, return retval1.函数(h)的结构, 没有(mi yu)形参2.变量的引用(ynyng)需要符号$,而变量的定义(dngy)或赋值则不需要。3.赋值要无间隙(jin x), 条件要间隙改进: 1.将路径、分隔符均作为函数的参数传入,应用得到扩展。补充,in_path函数不能对绝对路径的文件处理,需写个函数对这一情况单独处理checkForCmdInPath()

18、var=$1#首先判断传入的非空串是否为绝对路径,即检测第一个字符是不是”/”,如果是,直接测 x if $var != “” ; then # 条件等价于 -n $var if “$var%$var#?” = / ; then #等价于 $(echo $var | cut -c1) if ! -x $var ; then return 1 #not found or not executable fi elif ! inpath $var ; return 2 #not found in PATH fi此函数让人一头雾水,详解如下:1)表达式$var%$var#?作匹配用,分解为 $var%

19、expr $var#expr ,expr为正则表达式(? 匹配单一字符) 后者(带#的)返回 expr与var匹配成功位置之后的所有内容,此处为var中第一字符之后的所有。 前者(带%的)返回 expr与var匹配成功位置之前的所有内容,此处应为 var的第一个字符。 等价于 $(echo $var | cut c1) 即取第一字符。 等价于 $var:beginpos:size 中beginpos=0,size=1时的结果。 var的符号放在外面了,假设$var为$1,则表达式表示为 $1%$1#?2)关于if的条件判断与C语言中的理解不一致,反映在上述的 elif语句中的条件。理解如下:s

20、hell中的if条件可以是 表达式(需加方括号),另外还可以是命令或函数(不需方括号), 当命令执行成功时会后继执行具体操作,经测试,C语言中所说的true在shell中 用0表示,即if 0,才执行then,因为linux下的程序实现都是当返回0时表执行成功。3)若函数中没有返回值,则它默认返回0,表执行成功。 函数的编写若遵从以上的原则, 则对条件的理解 依旧像C语言中的TRUE,FALSE一样理解= 完善程序代码 =. # 函数实现区域 处理不路径 返回0表找到、可执行, 否则返回1#. # 函数实现(shxin)区域 处理(chl)带路径和不带路径的 返回(fnhu)1表没找到或不可执

21、行(zhng),返回2表没找到。默认(mrn)0表找到# # 代码执行起始位置 # if $# -nq 1 ; echo “Usage: $0 command” #$0 表此执行文件 (具体内容 以 执行此文件时的输入串为准) exit 0# 调用函数,并经第一个参数传给函数checkForCmdInpath $1# 对函数返回的结果进行判断 $? 为函数的返回值,case $? in # case 控制结构的格式,注意红色部分。 0) echo “found in PATH” ; 1) echo “not found or not executable” ; 2) echo “not found” ; # *) ; 类似于C语言中的 default=2.写一个脚本,检测用户输入串的合法性, 要求串由大小写字母、数字组成,无标点、特殊符号、空格。思

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1