Linux学习笔记 - Shell脚本编程实例

下面的例子基本上都是上面的知识点,比较扩展一点的就是awk命令的用法,下面代码仅作参考,写的不好,请见谅;错误的地方烦请指出,不胜感激!

1、测试Apache服务是否启动,若没有启动,则启动Apache服务

1
2
3
4
5
6
7
#! /bin/sh
# 测试Apache服务是否启动,若没有启动,则启动Apache服务
web=`/usr/bin/pgrep httpd`
if [ "ABC$web" = "ABC" ]
then
/etc/init.d/httpd start
fi

2、判断某个文件属于什么类型的文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#! /bin/sh
# 判断一个文件属于什么类型
f [ -d $1 ]
then
echo "这是一个目录";
elif [ -f $1 ]
then
echo "这是个普通文件"
elif [ -c $1 ]
then
echo "这是字符特殊文件"
elif [ -b $1 ]
then
echo "这是块特殊文件"
else
echo "我也不知道这是啥玩意"
fi

3、踢出用户的脚本

1
2
3
4
5
6
7
8
9
10
11
12
#! /bin/sh
# 判断用户是否在线,存在的话踢出用户
username=$1
/usr/bin/w > whoIsOnline
userString=`/usr/bin/awk -v user=$username '{if($1 == user) print $1}' ./whoIsOnline`
if [ "ABC$userString" = "ABC" ]
then
echo "$1 is not online"
else
killId=`/usr/bin/ps aux | /usr/bin/grep $username | /usr/bin/eprep -v grep |/usr/bin/awk {print $2}`
kill $killId
fi

4、显示用户的信息

1
2
3
4
5
6
7
8
9
#! /bin/sh
# 显示用户的相关信息
user=$1
if [ "ABC$user" = "ABC" ]
then
echo "请在命令行后面输入要查询的用户名!"
else
/usr/bin/grep ^$1: /etc/passwd | /usr/bin/awk -F ":" '{print "用户ID为"$3 ; print"用户组ID为"$4 ; print "你其实是"$5 ; print "你的主目录为"$6 ; print"你的默认Shell为"$7}'
fi

5、加减乘除的脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#! /bin/sh
# 加减乘除的小脚本,主要练习case语句
case $2 in
+)
echo "$1 + $3 = `expr $1 + $3` "
;;
-)
echo "$1 - $3 = `expr $1 - $3`"
;;
\*)
echo "$1 * $3 = `expr $1 \* $3`"
;;
/)
if [ $3 = 0 ]
then
echo "除数不能为0"
exit
else
echo "$1 / $3 = `expr $1 / $3`"
fi
;;
*)
echo "您的输入不符合规范,请重新输入"
esac

6、打印出1到10之间的平方数

1
2
3
4
5
6
7
8
9
#! /bin/sh
# 打印1-10之间的平方数,主要练习while语句
#赋值的时候注意不要加空格
i=1
while [ $i -le 10 ]
do
echo "$i 的平方为:`expr $i \* $i`"
i=`expr $i + 1`
done
1
2
3
4
5
6
#! /bin/sh
# 打印1-10之间的平方数,主要练习for语句
for i in {1..10}
do
echo "$i 的平方为:`expr $i \* $i`"
done

7、累加求和(使用shift命令)

1
2
3
4
5
6
7
8
9
#! /bin/sh
# 使用shift命令累加求和
sum=0
while [ $# -gt 0 ]
do
sum=`expr $sum + $1`
shift
done
echo "总和为:$sum"