简介
shell示例总结。
shell脚本示例
示例1:使用交互式方法批量添加用户
代码:
#!/bin/bash
echo "**************************"
read -p "请输入用户名:" name
read -p "请输入用户数:" num
read -p "请输入用户密码:" pas
echo "**************************"
for(( i=1; i<=$num; i++ ))
do
useradd -M $name$i
echo $pas|passwd --stdin $name$i >/dev/null 2>&1
echo "user $name$i is created successfully"
done
tail -$num /etc/passwd
示例2 :加法计算器
代码:
#!/bin/bash
if [ $# -le 0 ];then
echo "请输入参数"
exit 0
fi
sum=0
while [ $# -gt 0 ]
do
sum=$(expr $sum + $1)
#sum=$[$sum + $1]
shift 1
done
echo "the result is $sum"
示例3:mysql 自动化备份脚本
代码:
#!/bin/bash
#define path
bakdir=/data/mysql/`date +%Y-%m-%d`
mysqldb=tudou
mysqlusr=root
mysqlpw=123456
#must use root run this scripts
if [ ! $USER == "root" ];then
echo "the scropts must use root run"
sleep 2
exit 0
fi
#mkdir dir
if [ ! -d $bakdir ];then
mkdir -p $bakdir
else
echo "$bakdir is exist"
exit
fi
#use mysqldump backup mysql
mysqldump -u$mysqlusr -p$mysqlpw $mysqldb>$bakdir/${mysqldb}_db.sql
cd $bakdir;tar -zcf ${mysqldb}_db.tar.gz *.sql
#delete *.sql file
#delete 30 days ago file
[ $? -eq 0 ]&&echo "mysql backup sueccssfully"
cd /data/mysql;find . -mtime +30 -type d -exec rm -rf {} \;
echo "30 days ago dir is deleted"
示例4:nginx 服务启动脚本
代码:
#!/bin/bash
#nginx edition 1.12.2
path=/usr/local/nginx
desc="nginx daemon"
name=nginx
dae=$path/sbin/$name
config=$path/conf/$name.conf
pid=$path/logs/$name.pid
scriptsname=/etc/init.d/$name
do_start(){
$dae -c $config ||echo "nginx is running"
}
do_stop(){
$dae -s stop ||echo "nginx is not running"
}
do_reload(){
$dae -s reload ||echo "nginx can't reload"
}
[ -x $dae ]||exit 0
case $1 in
start)
echo -n "$desc:$name starting"
do_start
echo "."
;;
stop)
echo -n "$desc:$name stopping"
do_stop
echo "."
;;
relead)
echo -n "$desc:$name reloading"
do_reload
echo "."
;;
restart)
echo -n "$desc:$name restarting"
do_stop
do_start
echo "."
;;
*)
echo "please input start|stop|reload|restart"
exit 3
;;
esac
示例5:使用交互式方法批量删除用户
代码:
#!/bin/bash
echo "**************************"
read -p "请输入删除用户名:" name
read -p "请输入删除用户数:" num
echo "**************************"
for(( i=1; i<=$num; i++ ))
do
if /usr/bin/id $name$i>/dev/null 2>&1;then
userdel $name$i
echo "user $name$i is deleted"
else
echo "user $name$i is not exist"
fi
done