2015-04-02 163 views
1

我正在创建一个智能脚本来将文件上传到sftp站点。我无法使用scp,因为我无法控制sftp站点,并且供应商不允许公钥认证。bash脚本将文件上传到sftp

#!/bin/bash 

      read -p "Do you want to list the sftp site contents (y/n): " list 
      read -p "Upload Selected file, type the name of the file: " uploadfilename 


    conenctsfttp() { 
      export SSHPASS=**** 
      sshpass -e sftp -oBatchMode=no -b - [email protected] 
    } 

    listfiles() { 
      if [[ $list = y ]]; 
      then 
      conenctsfttp <<< $'ls\n bye' 
      else 
      echo not list 
      fi 
    } 

    uploadfilen() { 
    #  if [[ $uploadfilename = y ]]; 
    #  then 
      conenctsfttp << EOF 
      put $(uploadfilename) 
    EOF 
    } 

    listfiles 
    uploadfilen 

我该如何让脚本读取文件名并将文件上传到sftp服务器。文件名永远不会被读取,并且会进入无限循环。如果可能的话,我想定义一个位置来指定上传文件的位置。

+0

所以这有什么问题?从WHERE读取文件名? – 2015-04-02 14:32:56

+0

当我通过文件名上传我添加文件名,但它进入无限循环 – user1814718 2015-04-02 14:38:09

回答

0

$(uploadfilename)应该是$uploadfilename

$(...)是替代形式的命令替换。要从变量引用(检索)值,您需要使用$variable语法。

+0

一些如何调用函数uploadfilen()不会调用它从用户输入中抓取的文件名....它还需要调用连接来上传文件... – user1814718 2015-04-02 15:08:00

+0

它的工作原理!使用$ uploadfilename – user1814718 2015-04-02 15:13:49