使用.ksh脚本删除多个文件

时间:2015-06-30 16:18:06

标签: ftp ksh aix

现在我有一个.ksh ftp函数可以从FTP站点删除文件。它获取站点信息和文件名,并从FTP站点删除该文件。

doftp(){   
ftp -vni <<STOP
    open $1
    user $2 $3
    binary\
    cd $5
    delete $6
    STOP
    }

该功能唯一的缺点是,如果你需要从服务器上删除多个文件,它每次都会建立一个新的连接。我想加快速度并删除同一连接中的多个文件。我试过这样的东西,6美元是要删除的文件数组:

 deldoftp(){
    ftp -vni <<STOP
    counter=0 
    for s in ${6[@]}; do
    counter++
    if [counter=1]
    then 
    open $1
    user $2 $3
     binary\
    cd $5
    elif [counter <= 50]
   then
    delete $s
    else
    STOP
    counter=0
    fi 
    done 

我还没有使用此代码。这是由于语法错误还是ksh没有设计为这样工作?

1 个答案:

答案 0 :(得分:1)

您应该尝试以下方法:在函数内部将ftp命令发送到管道ftp进程的标准输入:

function doftp {
    # in ksh functions "typeset" declares local variables
    typeset host=$1
    shift
    typeset user=$1
    shift
    typeset pass=$1
    shift
    typeset dir=$1
    shift
    (
        # printed text is send as input of the ftp process
        print "open $host"
        print -R "user $user $pass" # -R to prevent backslash interpretation
        print "binary"
        print "cd $dir"
        print "pwd"
        # $1 $2 ... are the files to delete
        for file in "$@"
        do
            print "rm  $file"
        done 
    ) | ftp -vni
}