【原创】shell学习笔记第六天(shell脚本练习巩固,练为主) – 21运维
通知: .-...

【原创】shell学习笔记第六天(shell脚本练习巩固,练为主)

shell 21运维 2538浏览 0评论

1.从a.log 文件中提取包含―WARNING‖或‖FATAL‖,同时不包含―IGNOR‖的行,然后, 提取以―:‖分割的第五个字段?

2.添加一个新组为class01,然后,添加属于这个组的30 个用户,用户名的形式为stdXX, 其中,XX 从01 到30?

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

4.用shell 编程,判断一文件是不是字符设备文件,如果是将其拷贝到/dev 目录下? 参考答案:

#!/bin/bash
 
directory=/dev
 
for file in anaconda-ks.cfg install.log install.log.syslog
 
do
 
if [ -f $file ]
 
then
 
cp $file $directory/$file.bak
 
echo " HI, $LOGNAME $file is backed up already in $directory !!"
 
fi
 
done

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

(1).从下午4:50 删除/abc 目录下的全部子目录和全部文件;

(2).从早上8:00~下午6:00 每小时读取/xyz 目录下x1 文件中每行第一个域的全部数 据加入到/backup 目录下的back01.txt 文件内;

(3).每逢周一下午5:50 将/data 目录下的所有目录和文件归档并压缩为文件

backup.tar.gz;

(4).在下午5:55 将IDE 接口的CD-ROM 缷载(假设CD-ROM 的设备名为hdc);

(5).在早上8:00 前开机后启动。

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

#!/bin/bash #(1)

dir=$1 #(2)

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

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

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

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

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

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

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

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

7、在Linux系统中运行下面程序,最多可产生多少个进程?画出进程家族树。

main() { fork(); fork(); fork();

}

答:最多可以产生7个进程 3分

家族树如右 3分

8、试编写一个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 ]

then

max=$x

fi

if [ $ x –lt $min ]

then

min=$x

fi

i=`expr $i + 1`

done

echo “sum = $sum ; max = $max min = $min “

转载请注明:21运维 » 【原创】shell学习笔记第六天(shell脚本练习巩固,练为主)

发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址