Hello,World
#!/bin/bash
#这是注释,亲
echo "Hello,World!"
#第一行表示该文件的类型,第二行是注释,第三是输出,注意无需分号结尾
#创建此文件时默认是没有执行权限的,执行前需添加执行权限
#chmod a+x ./hello.sh 为所有用户和组添加该文件的执行权限
将标准输出和错误输出写入文件的三种方法
find /home -name lost* > all_result 1>& 2
find /home -name lost* 2> all_result 1>& 2
find /home -name lost* 2>& 1 > all_result
自动解压脚本
#!/bin/bash #该脚本可自动判断压缩文件格式,并用相应的命令进行解压 ftype="$(file "$1")" case "$ftype" in "$1: Zip archive"*) unzip "$1";; "$1: gzip compressed"*) gunzip "$1";; "$1: bzip2 compressed"*) bunzip2 "$1";; *)echo "该文件 $1 不能被smartzip解压"; esac
如果该rpm包可读,则打印出该rpm包的信息
#!/bin/bash #打印出一些rpm包的信息,调用方式sh showrpm.sh test1.rpm test2.rpm for rpmpackage in "$@";do if [ -r "$rpmpackage" ];then echo "======$rpmpackage======="; rpm -qi -p $rpmpackage else echo "ERROR:cannot read file $rpmpackage" fi done
shell调试
[root@www ~]# sh [-nvx] scripts.sh 选项不参数: -n :不要执行 script,仅查询语法的问题; -v :再执行 sccript 前,先将 scripts 的内容输出到屏幕上; -x :将使用到的 script 内容显示到屏幕上,这是很有用的参数!
if判断的参数
[ -f "somefile" ] :判断是否是一个文件
[-d “Directory”] : 判断目录是否存在
[ -x "/bin/ls" ] :判断/bin/ls是否存在并有可执行权限
[ -n "$var" ] :判断$var变量是否有值
[ "$a" = "$b" ] :判断$a和$b是否相等
1输入一个文件名,并按前天、昨天、今天三天的日期分别生成三个文件
#!/bin/bash #输入一个文件名,并按前天、昨天、今天三天的日期分别生成三个文件 PATH=/usr/local/openssl/bin:/usr/local/mysql/bin:/usr/local/php/bin:/usr/local/apache/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/pikaqiu/.local/bin:/home/pikaqiu/bin export PATH #让使用者输入文件名,如未输入则默认为pikaqiu echo -e "将创建三个文件" read -p "请输入文件名:" name filename=${name:-"pikaqiu"} date1=$(date --date='2 days ago' +%Y%m%d) date2=$(date --date='1 days ago' +%Y%m%d) date3=$(date +%Y%m%d) file1=${filename}${date1} file2=${filename}${date2} file3=${filename}${date3} #创建文件 touch "${file1}" touch "${file2}" touch "${file3}"
mysql自动备份脚本
#!/bin/bash #mysql备份脚本 #设置mysqldump的执行路径 PATH=/usr/local/openssl/bin:/usr/local/mysql/bin:/usr/local/php/bin:/usr/local/apache/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/pikaqiu/.local/bin:/home/pikaqiu/bin export PATH SQL_host=localhost SQL_user=root SQL_passwd=001020 SQL_db=$(date +%Y%m%d) backup_path=/usr/local/mysql/backup file=$(date +%Y%m%d).tar.gz cd $backup_path if [ -d $backup_path/$(date +%Y%m%d) ] then cd $backup_path/$(date +%Y%m%d) else mkdir $backup_path/$(date +%Y%m%d) cd $backup_path/$(date +%Y%m%d) fi mysqldump -h$SQL_host -u$SQL_user -p$SQL_passwd zero > $SQL_db.sql sleep 5 tar -czf $file $SQL_db.sql sleep 10 data=`date -d ' 8 day ago' +%Y%m%d` rm -rf $backup_path/"$data"
nginx日志切割
#!/bin/bash base_path='/usr/local/nginx/logs' log_path=$(date -d yesterday +"%Y%m") day=$(date -d yesterday +"%d") mkdir -p $base_path/$log_path mv $base_path/access.log $base_path/$log_path/access_$day.log #echo $base_path/$log_path/access_$day.log kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`