qinglou

shell脚本学习笔记实例

  为了更好的学习shell脚本编辑,在学习中整理了部分脚本实例和学习笔记。网友不喜勿喷!!

1.乘法口诀
#!/bin/bash
#
for i in `seq 1 9`
do
for j in `seq 1 $i`
do
k=$[$i*$j]
#-n选项,不换行,-e使用制表符
echo -ne "$j""X""$i=$k\t"
done
echo
done

 

2.猜数游戏
#!/bin/bash
##RANDOM随机函数,100取余就可以获得1-100的随机数字
n=$[$RANDOM%100]
while :
do
read -p "请输入一个1-100间的整数:" n1
n2=`echo $n1|sed 's/[0-9]/ /g'`
if [ ! -z $n2 ];then
echo "你输入的不是1-100的数字!"
continue
fi
if [ $n1 == $n ];then
echo "你猜对了!"
break
elif [ $n1 -gt $n ]; then
echo "你输入的数字太大了!"
continue
else
echo "你输入的数字太小了!"
continue
fi
done

 

3.用户密码警告期判断
#!/bin/bash
#用户密码警告时间脚本编辑
username=user1
nowtime=`date +%s`
nowdate=`expr $nowtime/86400`
createdate=`grep "^$username\>" /etc/shadow &> /dev/null | cut -d: -f3`
usingdate=`grep "^$username\>" /etc/shadow &> /dev/null | cut -d: -f5`
valdate=`grep "^$username\>" /etc/shadow &> /dev/null | cut -d: -f6`
remaindate=`expr $nowdate-$createdate`
remaintime=`expr $usingdate-$remaindate`
if [ $valdate -gl $remaintime ]; then
echo "warnning"
else
echo "right"
fi

 

4.用户添加
#!/bin/bash
#判断用户user1是否存在,如果存在则显示用户存在,否则添加用户user1并修改密码为user1
! id user1 &> /dev/null && useradd user1 && echo "user1" | passwd --stdin user1 &> /dev/null || echo "user1 exists."
#查询用户数量
user=`wc -l /etc/passwd | cut -d: -f1`
echo "$user users."

 

5.数值求和
#!/bin/bash
#1到100整数中分别求被3整除,偶数和奇数各自的和
declare -i SUM=0
for I in `seq 1 100`; do
if [ $[$I%3] -eq 0 ];then
SUM=$[$SUM+$I]
fi
done
echo "$SUM"
declare -i SUM=0
for I in `seq 1 100`; do
if [ $[$I%2] -eq 0 ];then
SUM=$[$SUM+$I]
fi
done
echo "$SUM"
declare -i SUM=0
for I in `seq 1 100`; do
if ! [ $[$I%2] -eq 0 ];then
SUM=$[$SUM+$I]
fi
done

 


6.识别参数创建和删除用户
#!/bin/bash
#自动添加和删除用户(只适用于学习,脚本严谨度差)
if [ $# -lt 1 ]; then
echo "Usage : adminusers ARG."
exit 1
fi
if [ $1 == '--add' ]; then
for I in {1..10}; do
if id user$I &> /dev/null; then
echo "user$I is exists."
else
useradd user$I
echo "add user$I is finished."
fi
done
elif [ $1 == '--del' ]; then
for I in {1..10}; do
if id user$I &> /dev/null; then
userdel -r user$I
echo "delete user$I finished."
else
echo "user$I is not exists."
fi
done
else
echo "Unknown ARG."
exit 9
fi

 


7.while和if组合应用
#!/bin/bash
#while循环
tag=1
while [ $tag == 1 ]; do
read -p "请输入你的成绩:" n
n1=`echo $n|sed 's/[0-9]/ /g'`
#-z:字符串长度为零则为真
if [ ! -z $n1 ];then
echo "格式不正确,请输入你的分数!"
tag=1
elif [ $n -lt 0 ] || [ $n -gt 100 ];then
echo "分数正确范围是0-100!"
tag=1
else
tag=0
fi
done
if [ $n -lt 60 ];then
echo "成绩不合格!"
elif [ $n -ge 60 ] && [ $n -lt 80 ];then
echo "成绩合格!"
elif [ $n -ge 80 ] && [ $n -lt 90 ];then
echo "成绩良好!"
else
echo "成绩优秀!"
fi

 

8.if和case组合应用
#!/bin/bash
#case判断
read -p "请输入你的成绩:" n
n1=`echo $n|sed 's/[0-9]/ /g'`
if [ ! -z $n1 ];then
echo "请输入你的分数!"
exit 1
elif [ $n -lt 0 ] || [ $n -gt 100 ];then
echo "分数正确范围是0-100!"
exit 2
fi
if [ $n -lt 60 ];then
tag=1
elif [ $n -ge 60 ] && [ $n -lt 80 ];then
tag=2
elif [ $n -ge 80 ] && [ $n -lt 90 ];then
tag=3
else
tag=4
fi

case $tag in
1)
echo "不及格"
;;
2)
echo "及格"
;;
3)
echo "良好"
;;
4)
echo "优秀"
;;
*)
echo "系统错误!"
;;
esac

 


9.随机数的应用
#!/bin/bash
#写一个脚本,生成10个随机数,分别求最大值和最小值
declare -i max=0
declare -i min=0
for i in {1..10};do
myrand=$RANDOM
[ $i -eq 1 ] && min=$RANDOM
if [ $i -le 9 ];then
echo -n "$myrand,"
else
echo "$myrand"
fi
[ $myrand -le $min ] && min=$myrand
[ $myrand -gt $max ] && max=$myrand
done
echo $max ,$min

 

10.case条件简单应用
#!/bin/bash
#在shell脚本中给定start|stop|restart|status参数,分别显示每个参数对应的状态
case $1 in
'start')
echo "start server..."
;;
'stop')
echo "stop server..."
;;
'restart')
echo "restarting server..."
;;
'status')
echo "running..."
;;

*)
echo "`basename $0` {start|stop|restart|status}"
;;
esac

 

11.for、case和if条件的灵活应用
#!/bin/bash
#添加或删除用户过程中,需要指定是否需要输出日志或者是否需要帮助
debug=0
add=0
del=0

for i in `seq 1 $#` ; do
case $1 in
-v|--verbose)
debug=1
shift
;;
-h|--help)
echo "Usage:`basename $0` --add user_list --del user_list -v|--verbose -h|--help"
exit 0
;;
--add)
add=1
addusers=$2
shift 2
;;
--del)
del=1
delusers=$2
shift 2
;;
esac
done

if [ $add -eq 1 ];then
for user in `echo $addusers | sed 's@,@ @g'` ;do
if id $user &> /dev/null; then
[ $debug -eq 1 ] && echo "$user exists."
else
useradd $user
[ $debug -eq 1 ] && echo "Add user $user finished."
fi
done
fi
if [ $del -eq 1 ];then
for user in `echo $delusers | sed 's@,@ @g'` ;do
if id $user &> /dev/null; then
userdel -r $user
[ $debug -eq 1 ] && echo "del user $user finished."
else
[ $debug -eq 1 ] && echo "$user is not exists."
fi
done
fi

posted on 2018-12-11 16:01 qinglou 阅读(...) 评论(...) 编辑 收藏

分类:

技术点:

相关文章: