有人可以帮我理解下面的一段代码,它决定从数据库中选择数据的开始和结束日期。
# Get the current time as the stop time.
#
stoptime=`date +"%Y-%m-%d %H:00"`
if test $? -ne 0
then
echo "Failed to get the date"
rm -f $1/.optpamo.pid
exit 4
fi
#
# Read the lasttime file to get the start time
#
if test -f $1/optlasttime
then
starttime=`cat $1/optlasttime`
# if the length of the chain is zero
# (lasttime is empty) It is updated properly
# (and I wait for the following hour)
if test -z "$starttime"
then
echo "Empty file lasttime"
echo $stoptime > $1/optlasttime
rm -f $1/.optpamo.pid
exit 5
fi
else
# If lasttime does not exist I create, it with the present date
# and I wait for the following hour
echo "File lasttime does not exist"
echo $stoptime > $1/optlasttime
rm -f $1/.optpamo.pid
exit 6
fi
由于
答案 0 :(得分:1)
脚本检查指定为参数(optlasttime
)的目录中是否存在名为$1
的非空文件。如果是,则脚本成功退出(状态0
)。如果文件不存在或为空,则将格式为2010-01-07 14:00
的当前小时写入文件,从参数目录中删除另一个名为.optpamo.pid
的文件,并且脚本退出失败(status {{ 1}}或5
)。
这个脚本显然是一个由一些外部进程调用的实用程序,您需要引用它以便完全理解。
答案 1 :(得分:0)
1。)将停止时间设置为当前时间
2.。)检查文件$ 1 / optlasttime是否存在(其中$ 1传递给脚本)
a.) if $1/optlasttime exists it checks the contents of the file (which it is assumed that if it does have contents it is a timestamp)
b.) if $1/optlasttime does not exist it populates the $1/optlasttime file with the stoptime.
答案 2 :(得分:0)
我将一小段内容复制并粘贴到一个名为test.ksh
stoptime=`date +"%Y-%m-%d %H:00"`
if test $? -ne 0
then
echo "Failed to get the date"
rm -f $1/.optpamo.pid
exit 4
fi
然后我在命令行上运行它,就像这样:
zhasper@berens:~$ ksh -x ./temp.ksh
+ date '+%Y-%m-%d %H:00'
+ stoptime='2010-01-08 18:00'
+ test 0 -ne 0
ksh的-x
标志使其在执行时完整地打印出每个命令行。将您在此处看到的内容与上面的shell脚本片段进行比较,可以告诉您ksh如何解释该文件。
如果你在整个文件中运行它,你应该对它正在做的事情有一个很好的感觉。
要了解详情,您可以阅读man ksh
,或在线搜索ksh scripting tutorial
。
总之,这三件事应该可以帮助你学到更多东西,而不仅仅是告诉你剧本的作用。