Shell脚本简单实例

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Shell脚本简单实例相关的知识,希望对你有一定的参考价值。

#!/bin/bash

# 以上是 Shell 脚本的解释器,开头必须要写,表示 Shell 脚本。/bin/sh 更多的用于 UNIX 下,并且相比 Bash 少了一些特性。更多地使用 /bin/bash,但是在 Linux 中 /bin/sh 是 /bin/bash 的软链接。

# Cleanup, version 3

LOG_DIR=/var/log    # 这里定义变量,一般都会定义经常用的内容,引用变量更专业更方便。

ROOT_UID=0            # 只有 root 用户才有权限。root 的 $UID 为 0。

LINES=50                  # 保存多少行。

E_XCD=86                 # 不能切换目录,导致退出的错误代码。

E_NOROOT=87         # 不是 root 用户,没权限退出的错误代码。


if [ "$UID" -ne "$ROOT_UID" ]        # 如果当前用户不是 root。-ne 表示不等于,-eq 表示等于。

then

    echo "Must be root to run this script."    # 则打印。

    exit $E_NOROOT                            # 并且退出。

fi


if [ -n "$1" ]                                # 如果第一个参数(位于脚本后)不是非空。n 表示 non-zero。

then

    lines=$1                                 # 把第一个参数的值赋给变量 lines。

else

    lines=$LINES                          # 如果第一个参数是空,则 lines 值为变量 LINES 赋予的值,为 50。

fi


### 以上这段也可以下面代替###

#######################################################################

E_WRONGARGS=85    # 非数字退出代码。

case "$1" in

"") lines=$LINES;;        # 如果第一个参数是空,则 lines 为 50。

*[!0-9]*) echo "Usage `basename $0` lines-to-cleanup`"; exit $E_WRONGARGS;;        # 也可以写成 *[^0-9]*。是通配符语法,字符串中有一个非数字,整个字符串就是非纯数字。[[:digit:]] 也是表示数字,但是只表示一个数字。`basename $0` 是脚本的自己名字(不含路径)。如果第一个参数输入的是非纯数字,则打印错误代码。

*) lines=$1;;    # 如果第一个参数是纯数字,则 lines 为参数值。

esac

#######################################################################


cd $LOG_DIR


if [ `pwd` != "$LOG_DIR" ]            # 这里的 `pwd` 也可以写成 $PWD。!= 表示不等于,也可以用 -ne。

then

    echo "Can‘t change to $LOG_DIR." 

    exit $E_XCD

fi


### 上述代码也可以写成 ###

#######################################################################

cd $LOG_DIR || {

        echo "Cant‘ change to necessary directory." >&2    # >&2 也就是 1>&2,就是把标准输出重定向到标准错误。但是这里加不加都一样的。|| 表示前面的命令执行失败后,执行后面的命令。若前面的命令执行成功,则后面的命令不执行。

        exit $E_XCD;

}

#######################################################################


tail -n $lines messages > mesg.tmp

mv mesg.temp messages


cat /dev/null > wtmp    # 清空 wtmp,: > wtmp 和 > wtmp 是一样效果。


echo "Log files are cleaned up."


exit 0    # 表示全都执行完了,最后输出状态代码 0,表示成功。

本文出自 “Alex的博客” 博客,请务必保留此出处http://houjun19830610.blog.51cto.com/9269760/1786201

以上是关于Shell脚本简单实例的主要内容,如果未能解决你的问题,请参考以下文章

我的一些简单的shell脚本实例

shell及编程实例

shell脚本交互:expect学习笔记及实例详解

shell脚本连接读写操作mysql数据库实例

Mac上实现一个简单的shell脚本

使用BASH Shell脚本实现自动化管理Linux服务器维护实例