2012-03-19 10 views
6

Estoy tratando de eliminar un archivo de un servidor FTP en mi shell scrip usando LFTP, pero por alguna razón no usará mis variables, y las toma como literales.Eliminando un archivo con LFTP usando las variables

El código:

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

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

Lo que yo quiero que haga es ejecutado:

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

Pero en cambio se ejecuta:

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

Y de la causa que no puede encontrar la el archivo literal "/ $ {BACKUPDIR}/$ {FILETODELETE}" en el servidor FTP y se queja de esta manera.

¿Qué estoy haciendo mal?

¡Salud!

+2

+1 para la pregunta, a. bien formateado, b. explicación clara de la meta, c. clara explicación del trabajo que O.P. había hecho hasta ahora. Buena suerte y sigue publicando. – shellter

Respuesta

12

Esto se debe a que está utilizando comillas simples en lugar de comillas dobles.

cambiar esto y trabajará

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

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

¡Gracias, amable señor! – Svante

+0

¡De nada! (No olvides aceptar la respuesta ;-)) –

Cuestiones relacionadas