理解ksh脚本的一部分

时间:2010-01-07 19:22:51

标签: shell scripting ksh

有人可以帮我理解下面的一段代码,它决定从数据库中选择数据的开始和结束日期。

# 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

由于

3 个答案:

答案 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

总之,这三件事应该可以帮助你学到更多东西,而不仅仅是告诉你剧本的作用。