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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell脚本的使用---特殊变量及脚本的综合使用相关的知识,希望对你有一定的参考价值。

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

一、环境变量

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="[\[email protected]\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 [email protected]‘192.168.100.151‘ identified

by ‘123123‘;

grant select,lock tables on coursedb.* to [email protected]‘192.168.100.151‘ identified

by ‘123123‘

show grants for [email protected]‘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  ##每天的两点半开始备份

本文出自 “LP-linux” 博客,请务必保留此出处http://linuxlp.blog.51cto.com/11463376/1774039

以上是关于shell脚本的使用---特殊变量及脚本的综合使用的主要内容,如果未能解决你的问题,请参考以下文章

工程师技术:Shell脚本的编写及测试重定向输出的应用使用特殊变量编写一个判断脚本编写一个批量添加用户脚本

shell--特殊位置参数变量及常用内置变量

Shell脚本基本编辑规范及变量

Shell变量的作用类型,及如何利用脚本配合任务计划远程备份mysql数据库

shell脚本介绍与变量应用

bash脚本变量变量类型