SFTPに変数を渡すには?

SFTPに変数を渡すには?

デフォルトでは、タイムスタンプであるSFTP接続中にファイル名を文字列と一致させようとします。

ファイル名の一部を一致させるには? SFTP接続で変数を宣言できないようです。また、Bashで以前に作成された変数を呼び出すこともできません。

編集:私が試したこと

yr=$(date + "%Y")
sftp -i key.pem un@server
sftp> echo $yr
Invalid command.
sftp> $yr
Invalid command.

新しいケース

sftp -i key.pem un@server
sftp> test=$(date +"%Y")
Invalid command.

その2つを試しました。

ベストアンサー1

プログラムはsftpそれ自体は完全に独立しておりbash、変数の値を知って拡張されます$yr。通常、アプリケーション固有の通信方法がなければ、bash変数を外部プログラムに渡すことはできません。

$yrファイル名に含まれるファイルのみをアップロードまたはダウンロードするには、scp次の方法を使用できます。

yr=$(date +%Y)
scp -i key.pem un@server:/some/long/path/that/includes/$yr .

ダウンロードのためまたは

scp -i key.pem some_local_file un@server:/some/long/$yr/path

アップロード用。

何らかの理由sftpで排他的に使用する必要がある場合は、すぐにバッチファイルを作成できます。

sftp -i key.pem -b - un@server <<< "get /some/path/with/$yr"

おすすめ記事