error de sintaxis: final inesperado del archivo

error de sintaxis: final inesperado del archivo
#!/bin/sh
if [ -e $1 ] ; then 
mv $1 $1_$(date +%Y%m%d%H%M) 
fi
exit 0

Mi requisito es buscar un archivo y, si el archivo sale, cambiarle el nombre y salir del programa. Necesitamos cambiar el nombre solo si el archivo sale.

Recibo el error mencionado anteriormente

Respuesta1

En términos generales, las variables de bash siempre deben estar entre comillas dobles.

Por ejemplo, digamos que $1 es My File.txt. Su script intenta hacer esto:

mv My File.txt My File.txt_201501010101

lo que mvsignifica que desea mover archivos My, File.txty Mycolectivamente al destino File.txt_201501010101.

Lo que quieres en su lugar es esto:

mv "My File.txt" "My File.txt_201501010101"

Consulte lo siguiente para obtener más detalles y otros errores que se deben evitar: http://mywiki.wooledge.org/BashPitfalls#cp_.24file_.24target

PD exit 0al final de un guión es redundante. Si el script finaliza sin errores, entonces el estado de salida es implícitamente 0.

información relacionada