1、建立新用户
输入要创建的用户,如果没输入,显示为请正确输入
查看输入的用户名是否存在,如果不存在则,新建用户,并要求输入建立密码
如果密码是空,则默认123456为密码,如果存在则显示用户已经存在
#!/bin/bash
read -p "请输入用户名:" name
if [ $name = " " ]
then
echo "请正确输入"
else
cat /etc/passwd |awk -F: '{print $1}' |grep "\<$name\>"
case $? in
1)
useradd $name
read -p "输入密码" mi
if [ "$mi" = "" ]
then
echo "123456" |passwd --stdin $name
echo "用户已经创建用户名:$name 密码:123456"
else
echo "$mi" |passwd --stdin $name
echo "用户已经创建用户名:$name 密码:$mi"
fi
;;
0)
echo "用户存在"
esac
fi
2、测试四个数按大小排列
1 #!/bin/bash
2 read -p "输入第一个数字" x
3 read -p "输入第二个数字" y
4 read -p "输入第三个数字" z
5 read -p "输入第四个数字" o
6 if [ "$x" = "" -o "$y" = "" -o "$z" = "" -o "$o" = "" ]
7 then
8 echo "请正确输入"
9 else
10 if [ $x -lt $y -a $x -lt $z -a $x -lt $o ]
11 then
12 if [ $y -lt $z -a $y -lt $o ]
13 then
14 if [ $z -lt $o ]
15 then
16 echo "$x小于$y小于$z小于$o"
17 else
18 echo "$x小于$y小于$o小于$z"
19 fi
20 elif [ $z -lt $y -a $z -lt $o ]
21 then
22 if [ $y -lt $o ]
23 then
24 echo "$x小于$z小于$y小于$o"
25 else
26 echo "$x小于$z小于$o小于$y"
27 fi
28 elif [ $o -lt $y -a $o -lt $z ]
29 then
30 if [ $y -lt $z ]
31 then
32 echo "$x小于$o小于$y小于$z"
33 else
34 echo "$x小于$o小于$z小于$y"
35 fi
36 fi
37 elif [ $y -lt $x -a $y -lt $z -a $y -lt $o ]
38 then
39 if [ $x -lt $z -a $x -lt $o ]
40 then
41 if [ $z -lt $o ]
42 then
43 echo "$y小于$x小于$z小于$o"
44 else
45 echo "$y小于$x小于$o小于$z"
46 fi
47 elif [ $z -lt $x -a $z -lt $o ]
48 then
49 if [ $x -lt $o ]
50 then
51 52 else
53 echo "$y小于$z小于$o小于$x"
54 fi
55 elif [ $o -lt $x -a $o -lt $z ]
56 then
57 if [ $x -lt $z ]
58 then
59 echo "$y小于$o小于$x小于$z"
60 else
61 echo "$y小于$o小于$z小于$x"
62 fi
63 fi
64 elif [ $z -lt $y -a $z -lt $x -a $z -lt $o ]
65 then
66 if [ $y -lt $x -a $y -lt $o ]
67 then
68 if [ $x -lt $o ]
69 then
70 echo "$z小于$y小于$x小于$o"
71 else
72 echo "$z小于$y小于$o小于$x"
73 fi
74 elif [ $x -lt $y -a $x -lt $o ]
75 then
76 if [ $y -lt $o ]
77 then
78 echo "$z小于$x小于$y小于$o"
79 else
80 echo "$z小于$x小于$o小于$y"
81 fi
82 elif [ $o -lt $y -a $o -lt $x ]
83 then
84 if [ $y -lt $x ]
85 then
86 echo "$z小于$o小于$y小于$x"
87 else
88 echo "$z小于$o小于$x小于$y"
89 fi
90 fi
91 elif [ $o -lt $y -a $o -lt $z -a $o -lt $x ]
92 then
93 if [ $y -lt $z -a $y -lt $x ]
94 then
95 if [ $z -lt $x ]
96 then
97 echo "$o小于$y小于$z小于$x"
98 else
99 echo "$o小于$y小于$x小于$z"
100 fi
101 elif [ $z -lt $y -a $z -lt $x ]
102 then
103 if [ $y -lt $x ]
104 then
105 echo "$o小于$z小于$y小于$x"
106 else
107 echo "$o小于$z小于$x小于$y"
108 fi
109 elif [ $x -lt $y -a $x -lt $z ]
110 then
111 if [ $y -lt $z ]
112 then
113 echo "$o小于$x小于$y小于$z"
114 else
115 echo "$o小于$x小于$z小于$y"
116 fi
117 fi
118 fi
119 fi
#!/bin/bash
arr=(30 10 50 60 40 20)
echo "原数组的顺序为:${arr[*]} "
#获取数组的长度
length=${#arr[*]}
#冒泡排序:
#定义比较轮数,为数组长度减一,并且要从1开始
for ((i=1; i<$length; i++))
do
#确定每次比较的元素下标,比较相邻2个元素,大的往后放,小的往前放,并且每轮比较的次数要随着轮>
数递减
for ((j=0;j<$length-$i; j++))
do
#获取第一个元素的值
first=${arr[$j]}
#获取第二个元素的值
k=$[$j+1]
second=${arr[$k]}
#比较第一个元素和第二个元素的值,如果第一个元素值大于第二个元素值则两个元素位置交换
if [ $first -gt $second ];then
#先把第一个元素的值保存在临时变量temp中
temp=${arr[$j]}
#把第二个元素的值赋给第一个元素
arr[$j]=$second
#把原来第一个元素的值赋给第二个元素
arr[$k]=$temp
fi
done
done
echo "排序后新的数组的顺序为:${arr[*]}"
3、便利一个指定目录下的所有文件,并打印出来
有一个文件夹路径是 /wls,如果想要遍历这个文件夹内的所有文件,并将它们保存到数组中,利用shell你可以这样做
for file in /wls/*
do
if test -f $file
then
arr=(${arr[*]} $file)
fi
done
echo ${arr[@]}
两级目录
for file in /wls/*
do
if test -f $file
then
arr=(${arr[*]} $file)
else
for subfile in $file
do
if test -f $subfile
then
arr=(${arr[*]} $subfile)
fi
done
fi
done
echo ${arr[@]}
如果有多级子目录的情况呢,这就要求我们去写一个function来协助我们,通过递归调用getdir就可以实现将wls文件夹内所有文件的绝对路径保存到数组中
function getdir(){
echo $1
for file in $1/*
do
if test -f $file
then
echo $file
arr=(${arr[*]} $file)
else
getdir $file
fi
done
}
getdir /wls
echo ${arr[@]}
4、过滤出日访问量最多的IP来源(前10个),并打印(要求将编写思路和内容说出来)
获取访问日志中每个ip的访问次数
[root@localhost ~]# cat /var/log/httpd/access_log |awk '{print $1}'|sort|uniq -c
2 ::1
10 192.168.153.1
110 192.168.153.130
4 192.168.153.149
119 192.168.153.177
3 192.168.153.183
29 192.168.153.185
打印出访问次数前5的ip地址和访问次数
[root@localhost ~]# cat /var/log/httpd/access_log |awk '{print $1}'|sort|uniq -c|sort -nr|head -5
119 192.168.153.177
110 192.168.153.130
29 192.168.153.185
10 192.168.153.1
4 192.168.153.149
提取访问次数超过20次的页面
[root@localhost httpd]# cat access_log|awk '{print $7}'|sort |uniq -c|awk '{if ($1>20) print $2}'
/
/images/apache_pb.gif
/images/poweredby.png
/noindex/css/bootstrap.min.css
/noindex/css/fonts/Bold/OpenSans-Bold.ttf
/noindex/css/fonts/Bold/OpenSans-Bold.woff
/noindex/css/fonts/Light/OpenSans-Light.ttf
/noindex/css/fonts/Light/OpenSans-Light.woff
/noindex/css/open-sans.css
打印出访问量最大的页面
[root@localhost httpd]# cat access_log|awk '{print $7}'|sort|uniq -c|sort -nr|head -1
62 /
打印出消耗带宽最大的页面
[root@localhost ~]# cat /var/log/httpd/access_log |awk '{print $7,$10}'|sort -nrk2|uniq|head -1|awk '{print $1}'/noindex/css/bootstrap.min.css
查看传输字节数大于200的资源
[root@localhost httpd]# cat access_log|awk '{print $7,$10}'|sort|uniq|awk '{if ($2>200) print $1}'
/
/favicon.ico
/images/apache_pb.gif
/images/poweredby.png
/noindex/css/bootstrap.min.css
/noindex/css/fonts/Bold/OpenSans-Bold.ttf
/noindex/css/fonts/Bold/OpenSans-Bold.woff
/noindex/css/fonts/Light/OpenSans-Light.ttf
/noindex/css/fonts/Light/OpenSans-Light.woff
/noindex/css/open-sans.css
查看访问次数最多的ip
[root@localhost ~]# cat /var/log/httpd/access_log |awk '{print $1}'|sort|uniq -c|sort -nr|head -1|cut -f 1
119 192.168.153.177
查看某一天的独立ip访问数量
[root@localhost httpd]# cat access_log|awk '{print $1}'|sort|uniq|wc -l
7
提取出某一天的PV量
[root@localhost ~]# cat /var/log/httpd/access_log| wc -l
277