首页 > 代码库 > shell脚本练习题(更新中...)

shell脚本练习题(更新中...)

练习题(这里贴的是自己写的代码, 网上给的题目代码我会附加在最下面)

1. 编写shell脚本,计算1-100的和;

 1 #!/bin/bash
 2 #caculate the sum of numbers from 1 to 100
 3 
 4 sum=0
 5 for i in `seq 1 100`; do
 6 sum=$[$sum+$i]
 7 done
 8 echo $sum

2. 编写shell脚本,要求输入一个数字,然后计算出从1到输入数字的和,要求,如果输入的数字小于1,则重新输入,直到输入正确的数字为止;

 1 #!/bin/bash
 2 
 3 read -p "please input a positive interger: " x
 4 while [ $x -lt 1 ]; do
 5     read -p "please input a positive interger: " x
 6 done
 7 
 8 sum=0
 9 for i in `seq 1 $x`; do
10     sum=$[$sum+$i]
11 done
12 echo $sum

3. 编写shell脚本,把/root/目录下的所有目录(只需要一级)拷贝到/tmp/目录下;

(注: 执行程序时需root)

1 #!/bin/bash
2 
3 for dir in `ls /root/`; do
4     if [ -d $dir ]; then
5         cp -r $dir /tmp/
6     fi
7 done

4. 编写shell脚本,批量建立用户user_00, user_01, … ,user_100并且所有用户同属于users组;

groupadd,groupdel, useradd, userdel 这类命令几乎没使用过,额好吧,不要给自己找理由。

1  #! /bin/bash
2 
3 groupadd users
4 
5 for i in `seq 0 9`; do
6 
7     useradd -g users user_0$i
8 
9 done

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

暂时不会做 :(.....需要学习awk以及sort命令的使用

6. 编写shell脚本,判断输入的IP是否正确(IP的规则是,n1.n2.n3.n4,其中1<n1<255, 0<n2<255, 0<n3<255, 0<n4<255

暂时还是不会做

 

  1 以下为练习题答案:
  2 
  3 1. #! /bin/bash
  4 
  5 sum=0
  6 
  7 for i in `seq 1 100`; do
  8 
  9 sum=$[$i+$sum]
 10 
 11 done
 12 
 13 echo $sum
 14 
 15 2. #! /bin/bash
 16 
 17 n=0
 18 
 19 while [ $n -lt "1" ]; do
 20 
 21 read -p "Please input a number, it must greater than "1":" n
 22 
 23 done
 24 
 25  
 26 
 27 sum=0
 28 
 29 for i in `seq 1 $n`; do
 30 
 31 sum=$[$i+$sum]
 32 
 33 done
 34 
 35 echo $sum
 36 
 37  
 38 
 39 3. #! /bin/bash
 40 
 41 for f in `ls /root/`; do
 42 
 43 if [ -d $f ] ; then
 44 
 45 cp -r $f /tmp/
 46 
 47 fi
 48 
 49 done
 50 
 51  
 52 
 53 4. #! /bin/bash
 54 
 55 groupadd users
 56 
 57 for i in `seq 0 9`; do
 58 
 59 useradd -g users user_0$i
 60 
 61 done
 62 
 63  
 64 
 65 for j in `seq 10 100`; do
 66 
 67 useradd -g users user_$j
 68 
 69 done
 70 
 71  
 72 
 73 5. #! /bin/bash
 74 
 75 awk -F: $0~/abc/ {print $1} test.log >/tmp/n.txt
 76 
 77 sort -n n.txt |uniq -c |sort -n >/tmp/n2.txt
 78 
 79 awk $1>10 {print $2} /tmp/n2.txt
 80 
 81  
 82 
 83 6. #! /bin/bash
 84 
 85 checkip() {
 86 
 87 if echo $1 |egrep -q ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ; then
 88 
 89 a=`echo $1 | awk -F. {print $1}`
 90 
 91 b=`echo $1 | awk -F. {print $2}`
 92 
 93 c=`echo $1 | awk -F. {print $3}`
 94 
 95 d=`echo $1 | awk -F. {print $4}`
 96 
 97  
 98 
 99 for n in $a $b $c $d; do
100 
101 if [ $n -ge 255 ] || [ $n -le 0 ]; then
102 
103 echo "the number of the IP should less than 255 and greate than 0"
104 
105 return 2
106 
107 fi
108 
109 done
110 
111 else
112 
113 echo "The IP you input is something wrong, the format is like 192.168.100.1"
114 
115 return 1
116 
117 fi
118 
119 }
120 
121  
122 
123 rs=1
124 
125 while [ $rs -gt 0 ]; do
126 
127 read -p "Please input the ip:" ip
128 
129 checkip $ip
130 
131 rs=`echo $?`
132 
133 done
134 
135 echo "The IP is right!"