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