Bashスクリプトsftpは、スクリプトがある同じディレクトリにのみファイルをダウンロードします。

Bashスクリプトsftpは、スクリプトがある同じディレクトリにのみファイルをダウンロードします。

奇妙な問題があります。 FTPサーバーから私のbashスクリプトが実行されているディレクトリ以外のディレクトリにファイルをダウンロードしようとしています。手動で行うと、すべてがうまく機能します。タイプをリンクできますか?

get sampleFile.csv /path/to/directory/

これをbashスクリプトに入れようとするとうまくいきません。手動で実行するのと同じ出力を取得します。

/ftp/sampleFile.csv 100%  384     0.4KB/s   00:01

ただし、ファイルはディレクトリやサーバーで見つかる場所にはありません。頑張りました

sftp ***** << EOF
get sampleFile.csv /path/to/directory/
quit
EOF

そして

cd /path/to/directory/
sftp ***** << EOF
get sampleFile.csv
quit
EOF    

そして

sftp ***** << EOF
lcd /path/to/directory
get sampleFile.csv
quit
EOF    

これらの作業はすべて手動で行われます。

働く唯一のこと

sftp ***** << EOF
get sampleFile.csv
quit
EOF 

これにより、ファイルはbashスクリプトと同じディレクトリに配置されて表示されます。どんなアイデアがありますか?

答え1

sftpスクリプト行lcd path/you/want/to/save/toの前に追加します。get

 ❯ sftp localhost
Connected to localhost.
# can't get sampleFile.csv because lpwd isn't what I think
sftp> get sampleFile.csv path/to/directory
File "/home/ryan/sampleFile.csv" not found.
sftp> lpwd
Local working directory: /home/ryan
# this will grab the file I want, but save it into `lpwd` again
sftp> get path/to/directory/sampleFile.csv
Fetching /home/ryan/path/to/directory/sampleFile.csv to sampleFile.csv
# pretend I want to save it locally in /tmp... so: lcd /tmp
sftp> lcd /tmp
sftp> get path/to/directory/sampleFile.csv
Fetching /home/ryan/path/to/directory/sampleFile.csv to sampleFile.csv

関連情報