早教吧 育儿知识 作业答案 考试题库 百科 知识分享

谁帮我看看这段shell是什么意思吧,尤其这一段if[-n"$1"]#/bin/bashROOTUID=0LINES=50EXCD=86ENOTROOT=87if["$UID"-ne"$ROOTUID"]thenecho"Mustberoottorunthisscript."exit$ENOTROOTfiif[-n"$1"]thenlines=$1elselines=$L

题目详情
谁帮我看看这段shell是什么意思吧,尤其这一段 if [ -n "$1" ]
#/bin/bash
ROOT_UID=0
LINES=50
E_XCD=86
E_NOTROOT=87
if [ "$UID" -ne "$ROOT_UID" ]
then
echo "Must be root to run this script."
exit $E_NOTROOT
fi
if [ -n "$1" ]
then
lines=$1
else
lines=$LINES
fi
cd $LOG_DIR
if [ "pwd" ="$LOG_DIR" ]
then
echo "Cant't change to $LOG_DIR."
exit $E_XCD
fi
tail -n $lines messages > mesg.temp
mv mesg.temp messages
exit 0
▼优质解答
答案和解析
#/bin/bash
ROOT_UID=0
LINES=50
E_XCD=86
E_NOTROOT=87
if [ "$UID" -ne "$ROOT_UID" ]
then
echo "Must be root to run this script."
exit $E_NOTROOT
fi
echo $1
自定义了几个变量外加判断目前用户是否为root..
if [ -n "$1" ]
then
lines=$1
else
lines=$LINES
fi
判断目前的程序的位置参数$1是否非空 非空为真 空为假 非空把$1带入到lines里.如果为空就把上边定义过的$lines带入到lines里.
cd $LOG_DIR
if [ "pwd" !="$LOG_DIR" ]
then
echo "Cant't change to $LOG_DIR."
exit $E_XCD
fi
然后进入 日志目录 这个目录应该是一个环境变量,判断所在目录是否为所定义的目录.
tail -n $lines messages > mesg.temp
mv mesg.temp messages
exit 0
从后显示 messages文件里 第$lines行的内容 写到 mesg.temp里
修改mesg.temp 为messages
退出
最后一句大概意思是一直保持messages内容为最新的记录.
自动清理以前不需要的内容.
说实话.我也只能顺序读出来.没怎么领悟原作者具体想干什么.