上一次修改时间:2015-11-16 04:35:09

shell示例

  1. Hello,World

     #!/bin/bash       
     #这是注释,亲     
     echo "Hello,World!" 
    #第一行表示该文件的类型,第二行是注释,第三是输出,注意无需分号结尾

    #创建此文件时默认是没有执行权限的,执行前需添加执行权限

    #chmod a+x ./hello.sh 为所有用户和组添加该文件的执行权限

  2. 将标准输出和错误输出写入文件的三种方法

     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

  3. 自动解压脚本

  4. #!/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
  5. 如果该rpm包可读,则打印出该rpm包的信息

  6.   #!/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
  7. shell调试

  8. [root@www ~]# sh [-nvx] scripts.sh 
    选项不参数: 
    -n  :不要执行 script,仅查询语法的问题; 
    -v  :再执行 sccript 前,先将 scripts 的内容输出到屏幕上; 
    -x  :将使用到的 script 内容显示到屏幕上,这是很有用的参数!
  9. if判断的参数

    [ -f "somefile" ] :判断是否是一个文件
    [-d “Directory”] : 判断目录是否存在
    [ -x "/bin/ls" ] :判断/bin/ls是否存在并有可执行权限
    [ -n "$var" ] :判断$var变量是否有值
    [ "$a" = "$b" ] :判断$a和$b是否相等

  10. 1输入一个文件名,并按前天、昨天、今天三天的日期分别生成三个文件

  11. #!/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}"
  12. mysql自动备份脚本

  13. #!/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"
  14. nginx日志切割

  15. #!/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`