2010-01-07 4 views
0

Может ли кто-нибудь помочь мне понять следующий фрагмент кода, который определяет даты начала и окончания, чтобы выбрать данные из db.понимание части скрипта 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 

Благодаря

+2

Какие биты вы неясны? –

+0

Похоже, что у вас возникли проблемы с форматированием фрагментов сценария. Если вы выделите их и нажмите кнопку над редактором с помощью значка '0101', он должен отформатировать их как код. –

+0

сценарий хорошо прокомментирован, так что вы не понимаете? – ghostdog74

ответ

1

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

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

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

Спасибо за объяснение ребятам. Могу ли я указать дату и время вручную (на определенный период) для получения данных за этот определенный период. Я имею в виду, могу ли я указать время останова в коде как 2010-01-03 15:00 и starttime как 2010-01-04 02:00 и запустить весь скрипт как ./scriptname? – Shajju

+0

Да, вы можете указать жесткие значения кода, если хотите. Или вы можете настроить его, чтобы разрешить запуск и остановку времени из командной строки за $ 1 и $ 2: ./scriptname "2010-01-04 02:00" "2010-01-04 04:00" – Courtland

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 

Тогда я побежал в командной строке, например, так:

[email protected]:~$ 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

Спасибо за совет. Есть ли онлайн-среда unix, в которой я могу запускать тестовые команды/скрипты? – Shajju