2015-04-02 217 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