2012-03-19 15 views
6

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

コード:

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

をしかし、その代わりに、それは動作します:

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

そして、それは見つけることができない原因を、私はそれが実行されて何をしたいのか

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

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

リテラルファイル "/ $ {BACKUPDIR}/$ {FILETODELETE}"をFTPサーバーに送信し、このように文句を言います。

私は間違って何をしていますか?

乾杯!

+2

+1、動作します。よくフォーマットされた、b。目標の明確な説明、c。 O.P.がこれまでに行った仕事の明確な説明。幸運と転載を続ける。 – shellter

答えて

12

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

変更するには、この質問のための

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

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

ありがとうございました! – Svante

+0

あなたは大歓迎です! (答えを受け入れることを忘れないでください;-)) –

関連する問題