ex2.sh
来自「BASH Shell 编程 经典教程 《高级SHELL脚本编程》中文版」· Shell 代码 · 共 83 行
SH
83 行
#!/bin/bash# 清除, 版本 3# 警告:# -----# 这个脚本有好多特征,#+ 这些特征是在后边章节进行解释的.# 大概是进行到本书的一半的时候,#+ 你就会觉得它没有什么神秘的了.LOG_DIR=/var/logROOT_UID=0 # $UID为0的时候,用户才具有root用户的权限LINES=50 # 默认的保存行数E_XCD=66 # 不能修改目录?E_NOTROOT=67 # 非root用户将以error退出# 当然要使用root用户来运行.if [ "$UID" -ne "$ROOT_UID" ]then echo "Must be root to run this script." exit $E_NOTROOTfi if [ -n "$1" ]# 测试是否有命令行参数(非空).then lines=$1else lines=$LINES # 默认,如果不在命令行中指定.fi # Stephane Chazelas 建议使用下边#+ 的更好方法来检测命令行参数.#+ 但对于这章来说还是有点超前.## E_WRONGARGS=65 # 非数值参数(错误的参数格式)## case "$1" in# "" ) lines=50;;# *[!0-9]*) echo "Usage: `basename $0` file-to-cleanup"; exit $E_WRONGARGS;;# * ) lines=$1;;# esac##* 直到"Loops"的章节才会对上边的内容进行详细的描述.cd $LOG_DIRif [ `pwd` != "$LOG_DIR" ] # 或者 if[ "$PWD" != "$LOG_DIR" ] # 不在 /var/log中?then echo "Can't change to $LOG_DIR." exit $E_XCDfi # 在处理log file之前,再确认一遍当前目录是否正确.# 更有效率的做法是:## cd /var/log || {# echo "Cannot change to necessary directory." >&2# exit $E_XCD;# }tail -$lines messages > mesg.temp # 保存log file消息的最后部分.mv mesg.temp messages # 变为新的log目录.# cat /dev/null > messages#* 不再需要了,使用上边的方法更安全.cat /dev/null > wtmp # ': > wtmp' 和 '> wtmp'具有相同的作用echo "Logs cleaned up."exit 0# 退出之前返回0,#+ 返回0表示成功.
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?