习题07Shell编程Word下载.docx

上传人:b****3 文档编号:16616317 上传时间:2022-11-24 格式:DOCX 页数:15 大小:27.62KB
下载 相关 举报
习题07Shell编程Word下载.docx_第1页
第1页 / 共15页
习题07Shell编程Word下载.docx_第2页
第2页 / 共15页
习题07Shell编程Word下载.docx_第3页
第3页 / 共15页
习题07Shell编程Word下载.docx_第4页
第4页 / 共15页
习题07Shell编程Word下载.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

习题07Shell编程Word下载.docx

《习题07Shell编程Word下载.docx》由会员分享,可在线阅读,更多相关《习题07Shell编程Word下载.docx(15页珍藏版)》请在冰豆网上搜索。

习题07Shell编程Word下载.docx

1.下面给出了一个SHELL程序,试对其行后有#(n)形式的语句进行解释,并说明程序完成的功能。

#!

/bin/sh

DIRNAME=`ls/root|grepbak`#

(1)

if[-z"

$DIRNAME"

];

then#

(2)

mkdir/root/bak;

cd/root/bak#(3)

fi

YY=`date+%y`;

MM=`date+%m`;

DD=`date+%d`#(4)

BACKETC=$YY$MM$DD_etc.tar.gz#(5)

tarzcvf$BACKETC/etc#(6)

echo"

filebackfinished!

"

答:

#

(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)

forfilein*

do

if[-f$file]#(5)

then

cat$file#(6)

echo“endoffile$file”

fi

done

else

echo“baddirectoryname$dir”

#

(1)使用/bin/bash解释脚本

#

(2)将位置变量1赋值给变量dir

#(3)如果dir所指为目录

#(4)将当前目录改为dir

#(5)如果循环变量file所指是普通文件

#(6)显示文件file的容6分

若命令行参数是一个合法目录则显示该目录下所有普通文件的容,否则显示错误的目录名信息。

4.试编写一个SHELL程序,该程序能接收用户从键盘输入的100个整数,然后求出其总和、最大值及最小值。

readmax

min=$max

sum=$max

i=1

while[$i–lt100]

do

 

readx 

sum=`expr$sum+$x`

if[$max–lt$x]

max=$x

if[$x–lt$min]

min=$x

fi

i=`expr$i+1`

done

sum=$sum;

max=$maxmin=$min"

5.创建一个shell脚本,它从用户那里接收10个数,并显示已输入的最大的数。

参考程序:

/bin/bash

max=0

for((count=1;

count<

=10;

count=count+1))

echo-n"

Enternumber$count:

"

readvalue

if[$max-lt$value]

max=$value

6.有一普通用户想在每周日凌晨零点零分定期备份/user/backup到/tmp目录下,该用户应如何做?

参考答案:

(1)第一种方法:

用户应使用crontab–e命令创建crontab文件。

格式如下:

00**suncp–r/user/backup/tmp

(2)第二种方法:

用户先在自己目录下新建文件file,文件容如下:

0**suncp–r/user/backup/tmp

然后执行crontabfile使生效。

7.写一个shell脚本,检查给出的串是否为回文(palindrome)。

Enterstring"

readstr

len=`echo$str|wc-c`

len=`expr$len-1`

l=`expr$len/2`

ctr=1

flag=0

whiletest$ctr-le$l

a=`echo$str|cut-c$ctr`

b=`echo$str|cut-c$len`

iftest$a-ne$b

thenflag=1

break

ctr=`expr$ctr+1`

iftest$flag-eq0

thenecho"

Stringispalindrome"

elseecho"

Stringnotapalindrome"

8.在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)最后出计算的结果。

参考代码:

if[$#-eq0];

thenecho-e"

$0noParams.\a\n"

;

exit0;

x=`echo$1|awk'

/[^[:

digit:

]]/{print$0}'

`

if["

x$x"

!

="

x"

Input:

$*error!

\a"

exit1;

fact=1;

tmp=1

while[$tmp-le$1]

fact=$((fact*tmp));

tmp=$((++tmp));

fact=$fact"

4.Shell程序中,对用户变量赋值有哪些方式?

简要说明每种赋值方式的使用方法。

(1)等号赋值

1)在等号前后均不能有空格。

2)当需要将一个包含空格的字符串赋给用户变量时,应用单引号将该字符串括起来。

(2)键盘赋值

由read命令来实现的。

用法为:

read用户变量名

当shell程序执行到该行时,将等待用户从键盘输入,

当用户按下回车键时shell把你输入的容赋给用户变量。

(3)命令替换赋值

用户变量=`命令`

该语句将首先执行反向单引号之间的命令,

然后将其执行后输出的容赋给该用户变量,在这种赋值方式中,

等号前后同样不能有空格,而且必须用反向单引号(即重音号)把命令括起来。

10.编写1个弹出式菜单的shell程序并实现其简单的菜单功能:

*******************************************************

*MENU*

*1.copy2.rename*

*3.remove4.find*

*5.exit*

*******************************************************

即用户按下数字1,则提示用户输入源和目的文件名后执行复制;

输入数字2,则提示用户输入要更名的文件或目录后执行更名操作;

输入数字3,则提示用户输入要删除的文件并执行删除操作;

输入数字4,则提示用户输入要查找的文件并执行查找操作;

输入数字5,则退出该菜单shell程序的执行。

/bin/sh-

clear

while[0];

************************************************"

menu"

1.copy2.rename"

3.remove4.find"

5.exit"

echo

select:

readchoice

case$choicein

1)

echo-n"

sourcefile:

readsrc

echo

destinationfold:

readdes

cp-arf$src$des

if$?

then

echo"

copysucessful!

else

copyfail"

fi;

2)

thefiletoberenamed:

thenewfile:

mv$src$des

renamesucessful!

renamefail"

3)

thefiletoberemoved:

rm-rf$src

echo"

removesucessful!

removefail"

4)

thefiletobefound:

find$HOME-name$src;

5)exit;

*)echo"

Invalidoption"

esac

12.编写shell程序,实现自动删除50个用户账号的功能。

账号名为stud1至stud50

while[$i-le50]

userdel-rstud${i}

i=$(($i+1))

3.用shell编写小九九乘法表程序,程序执行结果如下:

/bin/sh–

foriin123456789

forjin123456789

do

if(test$j-le$i)then

echo-ne`expr$i\*$j`"

\t"

echo

break

fi

done

13.什么是Shell,它的作用是什么?

shell,就是命令行解释程序,它提供了用户与操作系统之间基于命令行的交互界面。

户命令行输入命令,由SHELL对它们做出解释,并将其送往操作系统去执行。

14.用Shell编程,判断一文件是不是字符设备文件,如果是将其拷贝到/dev目录下。

FILENAME=

echo“Inputfilename:

readFILENAME

if[-c"

$FILENAME"

]

cp$FILENAME/dev

fi

15.请下列shell程序加注释,并说明程序的功能和调用方法。

#

#/etc/rc.d/rc.httpd

#Start/stop/restarttheApachewebserver.

#TomakeApachestartautomaticallyatboot,makethis

#fileexecutable:

chmod755/etc/rc.d/rc.httpd

case"

$1"

in

'

start'

/usr/sbin/apachectlstart;

stop'

/usr/sbin/apachectlstop;

restart'

/usr/sbin/apachectlrestart;

*)

usage$0start|stop|restart"

;

参考答案:

(1)程序注释

/bin/sh定义实用的shell

#/etc/rc.d/rc.httpd注释行,凡是以星号开始的行均为注释行。

in#case结构开始,判断“位置参数”决定执行的操作。

本程序携带一个“位置参数”,即$1

)#若位置参数为start

#启动httpd进程

)#若位置参数为stop

#关闭httpd进程

#重新启动httpd进程

*)#若位置参数不是start、stop或restart时

#显示命令提示信息:

程序的调用方法

esac#case结构结束

(2)程序的功能是启动,停止或重新启动httpd进程

(3)程序的调用方式有三种:

启动,停止和重新启动。

3.设计一个shell程序,添加一个新组为class1,然后添加属于这个组的30个用户,用户名的形式为stdxx,其中xx从01到30。

/bin/sh

groupaddclass1

while[$i-le30]

if[$i-le9];

USERNAME=stu0${i}

else

USERNAME=stu${i}

useradd$USERNAME

mkdir/home/$USERNAME

chown-R$USERNAME/home/$USERNAME

chgrp-Rclass1/home/$USERNAME

i=$(($i+1))

4.编写shell程序,实现自动删除50个账号的功能。

账号名为stud1至stud50。

5.某系统管理员需每天做一定的重复工作,请按照下列要求,编制一个解决方案:

(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文件的容:

5016***rm-r/abc/*

08-18/1***cut-f1/xyz/x1>

>

/backup/bak01.txt

5017***tarzcvfbackup.tar.gz/data

5517***umount/dev/hdc

(3)由超级用户登录,用crontab执行prgx文件中的容:

rootxxx:

#crontabprgx;

在每日早晨8:

00之前开机后即可自动启动crontab。

6.设计一个shell程序,在每月第一天备份并压缩/etc目录的所有容,存放在/root/bak目录里,且文件名为如下形式yymmdd_etc,yy为年,mm为月,dd为日。

Shell程序fileback存放在/usr/bin目录下。

(1)编写shell程序fileback:

DIRNAME=`ls/root|grepbak`

mkdir/root/bak

cd/root/bak

YY=`date+%y`

MM=`date+%m`

DD=`date+%d`

BACKETC=$YY$MM$DD_etc.tar.gz

tarzcvf$BACKETC/etc

(2)编写任务定时器:

001**/bin/sh/usr/bin/fileback"

>

/root/etcbakcron

crontab/root/etcbakcron

或使用crontab-e命令添加定时任务:

01***/bin/sh/usr/bin/fileback

7.有一普通用户想在每周日凌晨零点零分定期备份/user/backup到/tmp目录下,该用户应如何做?

8.设计一个Shell程序,在/userdata目录下建立50个目录,即user1~user50,并设置每个目录的权限,其中其他用户的权限为:

读;

文件所有者的权限为:

读、写、执行;

文件所有者所在组的权限为:

读、执行。

建立程序Pro16如下:

while[i-le50]

if[-d/userdata];

mkdir-p/userdata/user$i

chmod754/userdata/user$i

user$i"

let"

i=i+1"

(或i=$(($i+1))

mkdir/userdata

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

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

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