我正在使用bash腳本執行sftp,腳本正在運行,它啓動sftp進程並完成它,但它不復制整個數據(因爲我的數據大小約爲600 MB只copyies 800KB和終止。手動時做同樣的工作正常。sftp不能正常工作使用expect
下面是我的腳本內容
#!/bin/bash
HOST=x.x.x.x
PORT=22
USER=abc
PASSWORD=password
SOURCE_FILE=/nobackup/file.gz
TARGET_DIR=/home
/usr/bin/expect<<!
spawn /usr/bin/sftp -o Port=$PORT [email protected]$HOST
expect "password:"
send "$PASSWORD\r"
expect "sftp>"
send "get $SOURCE_FILE $TARGET_DIR\r"
expect "sftp>"
send "bye\r"
!
請幫助。
這是一個'expect'問題,而不是'bash'問題。 Expect是基於TCL的語言,根本不在POSIX sh系列中。 –
另外,在許多(但不是全部)系統上覆蓋'USER'是不好的形式 - 你會注意到它已經有一個值,即當前用戶名。爲自己的變量使用小寫字母名稱的一部分(正如相關POSIX標準中推薦的http://pubs.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap08.html - 請參閱第四段,保留在介意shell和環境變量共享一個名稱空間)不會錯誤地覆蓋系統變量。 –