
#!/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 mv
significa que desea mover archivos My
, File.txt
y My
colectivamente 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 0
al final de un guión es redundante. Si el script finaliza sin errores, entonces el estado de salida es implícitamente 0.