Shell编程学习Day04

shift命令

每执行一次shift,参数的序列左移,$#的值减1

举例:输出累加和

#!/bin/bash
if [ $# -le 0 ]
then
	echo "no parameters"
fi
sum=0
while [ $# -gt 0 ]
do 
	sum=`expr $sum + $1`
shift
done
echo $sum

这里的$sum + $1并不是sum+1的意思,而是sum加上第一个参数的意思,由于shift的作用,参数的顺序会左移。

结果:

Shell自定义函数

语法:
function 函数名 ()

{

    命令

其中function可以不写,调用函数时不用跟小括号,函数中变量均为全局变量,没有局部变量。

举例

#!/bin/bash
example ()
{
	echo $1
	echo $#
}
example 22 55

结果

案例一:自动备份Mysql脚本

#!/bin/bash
#auto backup mysql
#备份路径
BAKDIR=/data/backup/mysql/`date +%Y-%m-%d`
#将备份的数据库
MYSQLDB=test
#数据库密码
MYSQLPWD=root
#数据库用户
MYSQLUSR=root

#必须使用root执行
if
	[ $UID -ne 0 ] ; then
	echo "This script must use the root user"
	sleep 2
	exit 0
fi
#判断目录是否存在,不存在则新建
if
	[ ! -d $BAKDIR ] ; then
	mkdir -p $BAKDIR 
else
	echo This is $BAKDIR exists...
fi
#备份
/usr/bin/mysqldump -u$MYSQLUSR -p$MYSQLPWD -d $MYSQLDB > $BAKDIR/`date +%Y-%m-%d`.sql

cd  $BAKDIR ; tar -czf `date +%Y-%m-%d`.tar.gz *.sql
#打包后删除.sql文件
find . -type f -name *.sql -exec rm -rf {} \;
#备份成功,打印成功并删除30天以前的备份目录
[ $? -eq 0 ] && echo "This `date +%Y-%m-%d` MySql BACKUP is SUCCESS"
cd /data/backup/mysql/ ; find . -type d -mtime +30 | xargs rm -rf
echo "The mysql backup successfully"

注意:

1.$UID用于判断是否为root执行,切换为root用户时,$UID为0,其他情况不为0。

2.mysql备份语句

 

/usr/bin/mysqldump -u$MYSQLUSR -p$MYSQLPWD -d $MYSQLDB > $BAKDIR/`date +%Y-%m-%d`.sql

用法:

mysqldump -uroot -pPassword [database name] > [dump file]

3.创建目录语句,可以复用,BAKDIR表示需要创建的路径

 

if
	[ ! -d $BAKDIR ] ; then
	mkdir -p $BAKDIR 
else
	echo This is $BAKDIR exists...
fi

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值