我正在尝试运行包含if语句和一组初始条件的shell脚本。如果wget下载文件,我希望脚本检查文件夹中是否存在带有“grib2”扩展名的文件。如果文件确实存在,则将它们移动到另一个目录。如果在运行wget之后文件没有下载或存在于目录中,那么我希望wget从不同的源下载。该脚本旨在过滤。
我遇到的问题是第二个wget脚本永远不会运行,即使该文件夹中没有包含该扩展名的文件。
#!/bin/sh
#
# variables
#
basedir="ftp://ftp.ncep.noaa.gov/pub/data/nccf/com"
basename1="hur/prod/hur."
date=`date +"%Y%m%d"`
date1=`date +"%Y%m%d" -d "+1 days"`
date2=`date +"%Y%m%d" -d "-1 days"`
hour=`date +"%H"`
file=`ls -l /awips2/edex/data/gfdl/*.grib2 2>/dev/null`
#
# main
#
if [ $hour -ge "13" ] && [ $hour -le "18" ]
then
datetime="${date}12"
url1="${basedir}/${basename1}${datetime}/"
wget -r -nd --no-parent -e robots=off -R 'index.*' -A '*9*l*.0p16.*.grib2' -P /awips2/edex/data/gfdl/ $url1
if [[ "$file" != "0" ]]; then
mv /awips2/edex/data/gfdl/* /awips2/edex/data/manual/
else [[ "$file" != "1" ]]; then
wget -r -nd --no-parent -e robots=off -R 'index.*' -A '*0*l*.0p16.*.grib2' -P /awips2/edex/data/gfdl/ $url1
mv /awips2/edex/data/gfdl/* /awips2/edex/data/manual/
fi
elif [ $hour -ge "19" ] && [ $hour -le "23" ]
then
datetime="${date}18"
url1="${basedir}/${basename1}${datetime}/"
wget -r -nd --no-parent -e robots=off -R 'index.*' -A '*9*l*.0p16.*.grib2' -P /awips2/edex/data/gfdl/ $url1
if [[ "$file" != "0" ]]; then
mv /awips2/edex/data/gfdl/* /awips2/edex/data/manual/
else [[ "$file" != "1" ]]; then
wget -r -nd --no-parent -e robots=off -R 'index.*' -A '*0*l*.0p16.*.grib2' -P /awips2/edex/data/gfdl/ $url1
mv /awips2/edex/data/gfdl/* /awips2/edex/data/manual/
fi
fi
答案 0 :(得分:0)
注释
$files
的方式不会给您计算。此外,您的价值永远不会得到更新。elif
重写
#!/bin/bash
basedir="ftp://ftp.ncep.noaa.gov/pub/data/nccf/com"
basename1="hur/prod/hur."
download_dir=/awips2/edex/data/gfdl
files_dir=/awips2/edex/data/manual
read date hour <(date +"%Y%m%d %_H")
date1=$(date +"%Y%m%d" -d "+1 days")
date2=$(date +"%Y%m%d" -d "-1 days")
count_grib2_files() {
files=( "$download_dir"/*.grib2 )
# spit out the number of files
echo "${#files[@]}"
}
do_wget() {
wget -r -nd --no-parent -e robots=off -R 'index.*' -A "$2" -P "$download_dir" "$1"
}
getfiles() {
datetime="${date}$1"
url="${basedir}/${basename1}${datetime}/"
do_wget "$url" '*9*l*.0p16.*.grib2'
if [[ "$(count_grib2_files)" -gt 0 ]]; then
mv "$download_dir"/* "$files_dir"
else
do_wget "$url" '*0*l*.0p16.*.grib2'
if [[ "$(count_grib2_files)" -gt 0 ]]; then
mv "$download_dir"/* "$files_dir"
else
echo "could not download files!"
fi
fi
}
if [[ "$hour" -ge "13" ]] && [[ "$hour" -le "18" ]]
then
getfiles 12
elif [[ $hour -ge "19" ]] && [[ $hour -le "23" ]]
getfiles 18
fi