2015-04-15 7 views
-1

Я пытаюсь настроить скрипт, который смотрит на текущую дату и час, затем помещает его в формат yyyymmdd + 2 цифры. Примером может быть 2015041506. Час должен быть основан на 24-часовом часе.Пытается использовать операторы if для запуска wget

Сценарий затем повторяет дату, а затем запускает wget.

#!/bin/sh 

# 
# variables 
# 

basedir1="http://www.ftp.ncep.noaa.gov/data/nccf/com/hur/prod/hur." 
#basedir2="http://www.ftp.ncep.noaa.gov/data/nccf/com/hur/prod/hwrf." 
date=`date +"%Y%m%d"` 
date2=`date +"%Y%m%d" -d "yesterday"` 
hour=`date +%H` 

# 
# main 
# 


if [ $hour = "7" ] 
then 
datetime=`${date}06` 
echo ${datetime} 
url1="${basedir1}${datetime}/" 
wget -r -l1 --no-parent -e robots=off -R 'index.*' -A '*.grib.*.grib2' -P /awips2/edex/data/manual/ $url1 

elif [ $hour = "13" ] 
then 
datetime=`${date}12` 
echo ${datetime} 
url1="${basedir1}${datetime}/" 
wget -r -l1 --no-parent -e robots=off -R 'index.*' -A '*.grib.*.grib2' -P /awips2/edex/data/manual/ $url1 

elif [ $hour = "19" ] 
then 
datetime=`${date}18` 
echo ${datetime} 
url1="${basedir1}${datetime}/" 
wget -r -l1 --no-parent -e robots=off -R 'index.*' -A '*.grib.*.grib2' -P /awips2/edex/data/manual/ $url1 

elif [ $hour = "1" ] 
then 
datetime=`${date2}00` 
echo ${datetime} 
url1="${basedir1}${datetime}/" 
wget -r -l1 --no-parent -e robots=off -R 'index.*' -A '*.grib.*.grib2' -P /awips2/edex/data/manual/ $url1 
fi 

Сценарий не работает.

+0

Итак, что вопрос здесь –

+0

сценарий, кажется, не правильно работает не вторя информацию –

+0

научиться использовать предпочитаемые $ (...) вместо?.. метода back-tick '...' и многого другого - если лучше положить в оператор case. Пример для последующего. –

ответ

0

Вам нужно if [ $hour == "07" ] (обратите внимание на двойной =)

0

Вы должны заменить:

datetime=`${date}06` 

с

datetime="${date}06" 

А по поводу:

if [ $hour = "7" ] 

убедитесь, что он

if [ $hour = "07" ] 
1
case $hour in 
13) 
    datetime=`${date}12` 
    echo ${datetime} 
    url1="${basedir1}${datetime}/" 
    wget -r -l1 --no-parent -e robots=off -R 'index.*' -A '*.grib.*.grib2' -P /awips2/edex/data/manual/ $url1 
    ;; 
19) 
    datetime=`${date}18` 
    echo ${datetime} 
    url1="${basedir1}${datetime}/" 
    wget -r -l1 --no-parent -e robots=off -R 'index.*' -A '*.grib.*.grib2' -P /awips2/edex/data/manual/ $url1 
1) 
    datetime=`${date2}00` 
    echo ${datetime} 
    url1="${basedir1}${datetime}/" 
    wget -r -l1 --no-parent -e robots=off -R 'index.*' -A '*.grib.*.grib2' -P  /awips2/edex/data/manual/ $url1 
    ;; 
*) 
    datetime=`${date}06` 
    echo ${datetime} 
    url1="${basedir1}${datetime}/" 
    wget -r -l1 --no-parent -e robots=off -R 'index.*' -A '*.grib.*.grib2' -P /awips2/edex/data/manual/ $url1 
    ;; 
esac 

тогда я хотел бы посмотреть на команды wget, так как каждый из первых трех линий очень похожи, по крайней мере, с точки зрения «» даты и времени назначения. (Я слишком ленив, чтобы сделать эту работу за вас. Т.е. есть любой вещи отличается о них, чем присвоение «DateTime».

, если нет, то фактор, что часть из, например, всей своей вещи мощи (?) выглядит следующим образом:

case $hour in 
13) dh=12;; 
19) dh=18;; 
1) dh=06;; 
*) dh=00;; 
esac 

    datetime=$(date)$dh 
    echo ${datetime} 
    url1="${basedir1}${datetime}/" 
    wget -r -l1 --no-parent -e robots=off -R 'index.*' -A '*.grib.*.grib2' -P /awips2/edex/data/manual/ $url1 
+0

Datetime - единственный differenc e с первыми тремя строками. –

+0

Должен ли я сломать его дальше, даже используя оператор case? Если $ hour равен 1, используйте $ date2. Если $ hour больше 1, используйте $ date1. –

Смежные вопросы