特殊的变量及脚本的综合使用

一、环境变量

env ##查看所有的环境变量

echo -e "1\n2"  ##换行显示

echo -e "1\t2"  ##在1和2之间加入tab显示

echo -e "\033[44;37;5m ME\033[0m COOL" ##有颜色显示,"\033["是终端转义字符开始

echo -e "$PAHT\n $SHELL\n $HOSTNAME\n $MAIL\n $HISTSIZE\n\t $LANG" 

注意:PATH为命令搜索路径,SHELL为当前用户使用的shell,HISTSIZE为历史命令记录条数,LANG当前使用的语言

export ##查看全局环境变量定义情况

export LANG=en_US.UTF-8 ##设置默认语言,如果需要设置为中文将值改成zh_CN.UTF-8

locale  ##查看语言设置

unset HISTSIZE  ##取消环境变量HISTSIZE

PS1="\e[1;31m====>"  ##设置提示符

====>PS1="[\u@\h \W]\$"  ##恢复PS1的变量 

vim /etc/DIR_COLORS  ##修改第81,128行的值如下

81   DIR 01;43

128  .xz 01;32

:wq

tar Jcf changecls.xz /etc/hosts ;mkdir dir  ##创建测试文件和目录

ls  #查看创建的文件和目录的颜色

exit ##注销系统,重新登录验证

ls ##颜色已经变了

echo "export TMOUT=300" >>/etc/profile ##设置TMOUT为永久生效的环境变量,注意只有写入了文件的变量才是永久生效的

source /etc/profile

sed -i 's/HISTSIZE=100/HISTSIZE=800/g' /etc/profile ##设置历史命令条数

grep HIST /etc/profile |grep ^HI ##验证

source /etc/profile

echo $HISTSIZE

总结:环境变量是为用户设置的工作环境参数的变量,修改时先测试,再写入文件


二:位置变量和预定义变量

vi position.sh  ##编写并理解位置变量和与定义变量

#!/bin/bash

echo "This is \$0:$0"

echo "This is \$1:$1"

echo "This is \$2:$2"

echo "This is \$3:$3"

echo "This is \$4:$4"

echo "This is \$5:$5"

echo "This is \$6:$6"

echo "This is \$7:$7"

echo "This is \$8:$8"

echo "This is \$9:$9"

echo "This is \$#:$#"

echo "This is \$*:$*"

echo "This is \$?:$?"

echo "$0 is exec complete! "

:wq

chmod +x position.sh

/root/bin/position.sh a b c d e f g h x y z


vim bak.sh

#!/bin/bash

TF="/data/benfen-$(date +%F).tar.gz"

tar zcf $TF $* 1>/dev/null

echo "\$0:exec $0 script."

echo "\$#:total bakup $#."

echo "\$*:bakup $*"

echo "30 12 * * 7 /root/bin/bak.sh $*" >>/var/spool/cron/root

:wq

chmod +x bak.sh

/root/bin/bak.sh /etc/yum.repos.d/ /etc/sysconfig /etc/hosts  ##备份并观察$0,$#的作用


编写mysql备份脚本

1、准备数据库:

vim sql.sh  ##在mysql(192.168.100.150)服务器上编写该脚本

#!/bin/bash

## by linuxfan.cn 2016.1.1

mysql -uroot -p123123 <<END

create database studydb;

create database coursedb;

grant select,lock tables on studydb.* to operator@'192.168.100.151' identified

by '123123';

grant select,lock tables on coursedb.* to operator@'192.168.100.151' identified

by '123123'

show grants for operator@'192.168.100.151';

END

:wq

请完成下列操作后再执行脚本

netstat -utpln |grep 3306

mysql -uroot -p123123

chmod +x sql.sh

在上述脚本中使用变量,将可能随着主机的ip,数据库名称,密码,用户名设置为变量后并替换掉相应的位置

2、编写备份数据的脚本

在192.168.100.151的服务器上完成:

vim dbbak.sh

#!/bin/bash

## by linuxfan.cn

## 2016.1.1

mkdir /opt/dbbak/

/usr/bin/mysqldump -uoperator -p123123 -h 192.168.100.150 --databases coursedb

>/opt/dbbak/coursedb-$(date +%F-%H:%M).sql >/dev/null

/usr/bin/mysqldump -uoperator -p123123 -h 192.168.100.150 --databases studydb

>/opt/dbbak/studydb-$(date +%F-%H:%M).sql >/dev/null

/bin/tar Jcf /opt/dbbak/coursedb-$(date +%F-%H:%M).tar.xz

/opt/dbbak/coursedb-$(date +%F-%H:%M).sql --remove &>/dev/null

/bin/tar Jcf /opt/dbbak/studydb-$(date +%F-%H:%M).tar.xz

/opt/dbbak/studydb-$(date +%F-%H:%M).sql --remove &>/dev/null

:wq

请完成下列操作后再执行脚本

mount /dev/cdrom /mnt

yum -y install mysql  ##安装mysql客户端

mysql -uoperator -p123123 -h 192.168.100.150  ##登录测试

mysqldump -uoperator -p123123 -h 192.168.100.150 --databases studydb

>test.sql;ls  ##查看是否能成功备份

在上述脚本中使用变量,将用户,数据库名称,密码,主机ip,时间,备份后的sql文件名称,压缩文件的名称定义成变量,并替换相应的位置。

chmod +x dbbak.sh

脚本测试:

sh -x dbbak.sh

ls /opt/dbbak/  ##查看是否只有xz后缀的文件

测试成功后添加计划任务:

echo "30 2 * * * /root/bin/dsbak.sh" >>/var/spool/cron/root  ##每天的两点半开始备份