7

LFTPを使用してシェルスクリプトのFTPサーバーからファイルを削除しようとしていますが、何らかの理由で変数を使用せず、リテラルとして取得します。

コード:

USERNAME="theuser"
PASSWORD="verygoodpassword"
SERVER="example.com"
BACKUPDIR="thebackups"
FILETODELETE="uselessfile.obsolete"

lftp -e 'rm /${BACKUPDIR}/${FILETODELETE}; bye' -u $USERNAME,$PASSWORD $SERVER

私がやりたいのは実行です:

lftp -e 'rm /thebackups/uselessfile.obsolete; bye' -u theuser,verygoodpassword example.com

しかし、代わりにそれは実行されます:

lftp -e 'rm /${BACKUPDIR}/${FILETODELETE}; bye' -u theuser,verygoodpassword example.com

そして、原因として、FTPサーバー上でリテラルファイル "/ $ {BACKUPDIR} / $ {FILETODELETE}"を見つけることができず、このように文句を言います。

私は何が間違っているのですか?

乾杯!

4

1 に答える 1

16

これは、二重引用符ではなく単純引用符を使用しているためです。

これを変更すると機能します

USERNAME="theuser"
PASSWORD="verygoodpassword"
SERVER="example.com"
BACKUPDIR="thebackups"
FILETODELETE="uselessfile.obsolete"

lftp -e "rm /${BACKUPDIR}/${FILETODELETE}; bye" -u $USERNAME,$PASSWORD $SERVER
于 2012-03-19T15:58:33.197 に答える