понимание части сценария ksh - PullRequest
0 голосов
/ 07 января 2010

Может ли кто-нибудь помочь мне понять следующий фрагмент кода, который определяет даты начала и окончания для извлечения данных из базы данных.

# 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 ]

1 голос
/ 07 января 2010

Сценарий проверяет наличие непустого файла с именем optlasttime в каталоге, указанном в качестве аргумента ($1). Если это так, сценарий успешно завершается (статус 0). Если файл не существует или является пустым, в файл записывается текущий час, отформатированный как 2010-01-07 14:00, другой файл с именем .optpamo.pid удаляется из каталога аргументов и сценарий завершается неудачно (состояние 5 или 6).

Этот скрипт, очевидно, является утилитой, вызываемой каким-то внешним процессом, к которому вам нужно обратиться для полного понимания.

0 голосов
/ 08 января 2010

Я скопировал и вставил небольшой фрагмент этого в файл, который я назвал 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

Флаг -x для ksh заставляет печатать каждую командную строку в полном объеме при выполнении. Сравнение того, что вы видите здесь с фрагментом сценария оболочки выше, должно кое-что рассказать о том, как ksh интерпретирует файл.

Если вы запустите этот файл целиком, у вас должно получиться хорошее представление о том, что он делает.

Чтобы узнать больше, вы можете прочитать man ksh или выполнить поиск ksh scripting tutorial онлайн.

Вместе эти три вещи должны помочь вам узнать гораздо больше, чем просто рассказывать нам, что делает сценарий.

0 голосов
/ 07 января 2010

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. 
...