linux shell脚本的循环下载
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux shell脚本的循环下载相关的知识,希望对你有一定的参考价值。
linux shell脚本的循环下载:
两个日期:起始日期为startDate,结束日期为endDate,格式都是YYYYMMDD,
要下载的文件名字为File_YYYYMMDD.csv,但并不是每个日期都有这个文件。
我想用ftp循环下载存在的文件,以下为ftp代码,该怎样把循环文件名加进去呢?
lftp username:password@10.11.12.13 <<EOF
lcd /ftp_folder
get File_$fileDate.csv -o File_$fileDate.csv
close
bye
EOF
#usage: getfile FirstDay LastDay
curday=$2
firstday=$1
while [ $firstday -le $curday ]
do
echo $curday
lftp username:password@10.11.12.13 <<EOF
lcd /ftp_folder
binary
get File_$curday.csv -o File_$curday.csv
close
bye
EOF
curday=`date -d "$curday 1 day ago" +%Y%m%d`
done
直接日期加1的根本没考虑日期跨月的情况
追问请问您$1、$2分别代表 $startDate和$endDate 吗,还有 这个循环能加个限制吗 就是取到一个文件就停止。
追答是的
$1是脚本的第一个参数,就是开始日期
$2是脚本的第二个参数,就是结束日期
可以加限制,特定日期可以作为第三个参数传进去,在循环中进行判断
麻烦指导一下限制该则么加呗,我用您给的方法写,因为firstday日期的文件不存在,所以控制台一直重复提示文件不存在这句话,不会去寻找第二天的文件,我也试过firstday文件存在的情况,在这种情况下,会一直重复下载firstday的文件,同样不会去找第二天的文件。
追答这个不可能啊,中间一个文件不存在没关系,会跳到下一个的
echo $curday 这条语句的输出,能看出来日期的变化
并且我是从最后一天倒着下载的,最后才是FirstDay文件
你在while循环echo $curday下面加个read 语句,这样可以暂停一下,看清楚输出,回车即可继续
多谢,由于我自己的问题,把下面的加一天注释掉了。
追答不客气
参考技术A while true;dofilename=`date +'%Y%m%d'`.csv
ftp username:password@10.11.12.13 <<EOF
cd /ftp_folder
get filename
close
bye
EOF
sleep 151200
done追问
要在起始日期和结束日期之间循环得到文件名
追答startDate="20140528"endDate="20140529"
start=`date -d "$startDate" +%s`
end=`date -d "$endDate" +%s`
for((i=start;i<=end;i++))
do
filename=File_`date -d @$i "+%Y%m%d"`.csv
#do test ftp
done追问
谢谢 我试试
追答startDate="20140528"endDate="20140530"
start=`date -d $startDate +%s`
end=`date -d $endDate +%s`
echo $start
echo $end
for((i=start;i<=end;i+=86400))
do
filename=File_`date -d @$i "+%Y%m%d"`.csv
#echo $filename
ftp username:password@10.11.12.13 <<EOF
cd /ftp_folder
get $filename
close
bye
EOF
if [ -f $filename ]
then
break
fi
done
请认真回答,不要骗分。
追答请认真理解,不要瞎说
追问怎么也看不出来你写的那句有和循环有关的
追答wget可以同步ftp下/test目录里的所有文件到本地/test
追问那循环文件名来取到存在的文件呢
追答会全部取下来的,得根据实际情况启动同步
参考技术C 最简单的就用CRON实现。追问我问的是循环的问题啊
Linux系统shell脚本for循环实战之目录权限
Linux系统shell脚本for循环实战之目录权限
一、脚本要求
1.要求输入任意目录:
若目录不在,输出该目录不存在
若目录存在,输出该目录下的文件或目录,且列出其权限
二、编写脚本
[root@192 scripts]# cat ./found_file.sh
#!/bin/bash
########################################
#Author:jeven
#time:Sun 15 May 2022 09:26:22 PM CST
#filename:found_file.sh
#Script description:
########################################
read -p "please input a dir :" dir
if [ "$dir" == "" -o ! -d "$dir" ];then
echo "the $dir is not exist!"
exit 1
fi
FILE=$( ls "$dir")
for filename in $FILE
do
perm=""
test -r "$dir/$filename" && perm="$perm readable"
test -w "$dir/$filename" && perm="$perm writable"
test -x "$dir/$filename" && perm="$perm executable"
echo "the file $dir /$filename 's permission is $perm "
done
三、执行脚本
[root@192 scripts]# ./found_file.sh
please input a dir :/data/mysql
the file /data/mysql /file0 's permission is readable writable
the file /data/mysql /file1 's permission is readable writable
the file /data/mysql /file10 's permission is readable writable
the file /data/mysql /file2 's permission is readable writable
the file /data/mysql /file3 's permission is readable writable
the file /data/mysql /file4 's permission is readable writable
the file /data/mysql /file5 's permission is readable writable
the file /data/mysql /file6 's permission is readable writable
the file /data/mysql /file7 's permission is readable writable
the file /data/mysql /file8 's permission is readable writable
the file /data/mysql /file9 's permission is readable writable
以上是关于linux shell脚本的循环下载的主要内容,如果未能解决你的问题,请参考以下文章