shell练习 下载本文

内容发布更新时间 : 2024/5/21 1:21:53星期一 下面是文章的全部内容请认真阅读。

Shell专项练习题_独家秘制(入门级别练习)

# if echo $1 |egrep -q `^[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}$` ;then a=`echo $1 | awk -F. '{print $1}'` b=`echo $1 | awk -F. '{print $2}'` c=`echo $1 | awk -F. '{print $3}'` d=`echo $1 | awk -F. '{print $4}'` for n in $a $b $c $d; do

if [ $n -ge 255 ] || [ $n -le 0 ];then

echo \ return 2 fi done else

echo \ return 1 fi } rs=1

while [ $rs -gt 0 ];do

read -p \checkip $ip rs=`echo $?` done

echo \

10、截取文档关键词,并打印。

截取文件test.log中包含关键词 ‘abc’ 的行中的第一列(假设分隔符为 ”:” ),然后把截取的数字排序(假设第一列为数字),然后打印出重复次数超过10次的列; #! /bin/bash

6

Shell专项练习题_独家秘制(入门级别练习)

awk -F':' '$0~/abc/ {print $1}' test.log >/tmp/n.txt sort -n n.txt |uniq -c |sort -n >/tmp/n2.txt awk '$1>10 {print $2}' /tmp/n2.txt

11、更改文件属性

要求:1.创建目录/tmp/scripts

2.切换工作目录至此目录中

3.复制/etc/pam.d目录至当前目录,并重命名为test

4.将当前目录的test及其里面的文件和子目录的属主改为redhat 5.将test及其子目录中的文件的其它用户的权限改为没有任何权限 #! /bin/bash

mkdir -v /tmp/scripts cd /tmp/scripts

cp -r /etc/pam.d ./test chown -R sshd ./test chmod -R o-rwx ./test

12、输入符合要求的字符

输出首字母有6、x、y,输出字符数字顺序开头的字符。 #! /bin/bash date

mkdir /tmp/lstest cd /tmp/lstest

mkdir ald b56e 6test touch xy x2y 732 ls [ax6]*

ls [[:alpha:]][[:digit:]]*

7

Shell专项练习题_独家秘制(入门级别练习)

13、测试主机ip是否在线

通过ping命令测试192.168.0.151到192.168.0.254之间的所有主机是否在线 如果在线,就显示“ip is up”

如果不在线,就显示“ip is down”

ping -c1 -w1 中-c1是指ping的次数,-w是指执行的最后期限,也就是执行的时间,单位为秒

&>/dev/null 是指标准输出和错误输出都输出到/dev/null上,而不在界面上显示; 后面的&&和|| 是与和或得意思,如a&&b||c ,表示a为真,则执行b;否则执行c

#!/bin/bash

for I in `seq 151 254`;do

ping -c1 -w1 192.168.0.$I &>/dev/null && echo \is up\|| echo \ done

14、随机输入数字,比较大小 写一个猜数字脚本,当用户输入的数字和预设数字(随机生成一个小于100的数字)一样时,直接退出,否则让用户一直输入,并且提示用户的数字比预设数字大或者小。 #!/bin/bash

m=`echo $RANDOM` n1=$[$m0] while : do

read -p \ if [ $n == $n1 ] then

break

elif [ $n -gt $n1 ] then

8

Shell专项练习题_独家秘制(入门级别练习)

echo \ continue else

echo \ continue fi done

echo \

15、输入脚本,计算所有进程所占内存之和。

ps 可以查看进程的内存占用大小,写一个脚本计算一下所有进程所占用内存大小的和。(提示,使用ps aux 列出所有进程,过滤出RSS那列,然后求和)

[root@localhost shell]# ps aux | grep -v 'RSS TTY' |awk '{(sum=sum+$6)};END{print sum}' 脚本: #! /bin/bash sum=0

for mem in `ps aux |awk '{print $6}' |grep -v 'RSS' ` do

sum=$[$sum+$mem] done

echo \

9

Shell专项练习题_独家秘制(入门级别练习)

16、找规律写脚本

邱李笔试题shell脚本:

请详细查看如下几个数字的规律,并使用shell脚本输出后面的十个数字。 10 31 53 77 105 141 .......

试题解析:

我想大多数人都会去比较这些数字的差值: 10 31 53 77 105 141 21 22 24 28 36

但是这个差值看,并没有什么规律,而我们再仔细看的时候,发现这个差值的差值是有规律的:

10 31 53 77 105 141 21 22 24 28 36 1 2 4 8 所以,最终得出规律

#! /bin/bash a=10

for i in `seq 1 15` ;do echo $a

a=$[$a+20+2**(i-1)] done

10