而ssh中的循环在shell脚本中变得无限

时间:2016-09-01 10:36:42

标签: linux bash ssh sh

#!/bin/bash

date1=$1
date2=$2

startday=${date1#*-*-}
startmonthday=${date1#*-}
startmonth=${startmonthday%%-*}
startyear=${date1%%-*-*}

endday=${date2#*-*-}
endmonthday=${date2#*-}
endmonth=${endmonthday%%-*}
endyear=${date2%%-*-*}


#set current and end date
current=$startyear$startmonth$startday
end=$endyear$endmonth$endday
end=$(date -d "$end + 1 day" +"%Y%m%d") ;
#loop over all dates
ssh -T user@server << EOF
cd path
pwd
        while [ $end != $current ] 
        do
        {
                echo $current;
                current=$(date -d "$current + 1 day" +"%Y%m%d") ;
        }
        done
exit
EOF

这是我的代码。当我运行此代码时,它会进入无限循环,因为根据我的说法,下面的代码不起作用 current = $(date -d“$ current + 1 day”+“%Y%m%d”);

当我在没有ssh的情况下编写代码时,一切正常。 请告诉我它为什么不起作用。

    while [ $end != $current ] 
                do
                {
                        echo $current;
                        current=$(date -d "$current + 1 day" +"%Y%m%d") ;
                }
                done

我的实际需要是

    ssh -T user@server << EOF
    cd path
    pwd
            while [ $end != $current ] 
            do
            {
                    scp user2@server2:path/upd_$current*var* .
                    current=$(date -d "$current + 1 day" +"%Y%m%d") ;
            }
            done
    exit
    EOF

请告诉我如何以有效的方式做到这一点 我想复制名为以下模式的文件。 upd_date-var.stats.xls 我每天都有一个新文件,我想要复制在作为参数传递的2个日期之间的所有日期的文件

0 个答案:

没有答案