尝试使用 if 语句 运行 wget

Trying to use if statements to run wget

我正在尝试设置一个脚本来查看当前日期和时间,然后将其转换为 yyyymmdd + 2 位数字的格式。例如 2015041506。小时应基于 24 小时制。

然后脚本会回显日期,然后 运行 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

脚本似乎没有运行。

你应该替换:

datetime=`${date}06`

datetime="${date}06"

关于:

if [ $hour = "7" ]

确保它是

if [ $hour = "07" ]

你需要if [ $hour == "07" ](注意双=

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' 赋值方面是这样。 (我懒得为你做这项工作。也就是说,它们与 "datetime".

的分配有 any 不同的地方吗?

如果不是,则将该部分排除在外,例如你的整个事情 可能 (?) 看起来像这样:

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