【Shell】Shell介绍及常用shell脚本

Shell介绍

  shell是一个用c编写的程序,是用户和系统内核交互的工具。它既是一种命令语言也是一种解释性的编程语言。

 

Shell的功能

  1. 命令行解释功能。解析命令行中输入的命令。比如ls,cp,df等等。

  2. shell编程,可以开发一些自动化的小工具。比如系统中很多启动脚本就是用shell开发的。

  3. 变量维护。比如打印当前用户echo $USER。

  4. 启动程序,比如启动Apache,nginx等。

  5. 输入输出重定向。

 

Shell脚本  

  定义:

    shell脚本就是将完成一个任务的所有命令按照执行的顺序,自上而下写入到一个文本文件中,然后给予可执行权限。

   脚本书写规范

    1. shell脚本文件命名不要用无意义的字母或者数字,要见名之意。文件扩展名用.sh结尾。文件名总长度最好不要超过30个字符。

    2. 脚本开头第一行定义脚本执行环境,如 #!/bin/bash 或者 #!/bin/sh,前面#!这个称之为幻数,后面跟的是解释此脚本的shell的路径,内核会根据它来决定用哪个程序来执行。默认是用bash来解释。

      3. 脚本开头要写一些必要的脚本注释信息,就是该脚本的作用,如果没有注释会很难理解脚本的功能,只能通读一遍代码,这样会浪费很多宝贵时间。下面是一个例子。

#Author :songguojun
#Created at : 2019-10-10
#Release : 1.0
#Script Description:  nginx install

 

 

 

Shell脚本实际案例

1.检查主机存活状态

#!/bin/bash  
IP_LIST="192.168.18.1 192.168.1.1 192.168.18.2"
for IP in $IP_LIST; do
    NUM=1
    while [ $NUM -le 3 ]; do
        if ping -w 2 $IP > /dev/null; then   #设置两秒超时时间
            echo "$IP Ping is successful."
            break
        else
            # echo "$IP Ping is failure $NUM"
            FAIL_COUNT[$NUM]=$IP
            let NUM++
        fi
    done
    if [ ${#FAIL_COUNT[*]} -eq 3 ];then
        echo "${FAIL_COUNT[1]} Ping is failure!"
        unset FAIL_COUNT[*]
    fi
done

 2.遍历两个时间段并动态修改时间

#!/bin/bash
#用法 : sh time.sh  2019-01-01  2020-01-01
EXPORT_START_DATE
=$1 EXPORT_END_DATE=$2 date -s "$EXPORT_START_DATE" > /dev/null i=$EXPORT_START_DATE while [[ $i < `date -d "+1 day $EXPORT_END_DATE" +%Y%m%d` ]] do
echo $i i=`date -d "+1 day $i" +%Y-%m-%d` done

 

posted @ 2019-04-15 10:56  songguojun  阅读(592)  评论(0编辑  收藏  举报