Respuestas:
No te molestes en comprobar si el archivo existe, solo intenta eliminarlo.
rm -f /p/a/t/h
# or
rm /p/a/t/h 2> /dev/null
Tenga en cuenta que el segundo comando fallará (devolverá un estado de salida distinto de cero) si el archivo no existía, pero el primero tendrá éxito debido a la opción -f
(abreviatura --force
). Dependiendo de la situación, esto puede ser un detalle importante.
Pero lo más probable es que si está agregando al archivo es porque su script está usando >>
para redirigir algo al archivo. Solo reemplace >>
con >
. Es difícil de decir ya que no has proporcionado ningún código.
Tenga en cuenta que puede hacer algo como test -f /p/a/t/h && rm /p/a/t/h
, pero hacerlo es completamente inútil. Es muy posible que la prueba vuelva a ser verdadera, pero / p / a / t / h no existirá antes de intentar eliminarla, o peor aún, la prueba fallará y se creará / p / a / t / h antes de ejecutar el siguiente comando que espera que no exista. Intentar esto es una condición clásica de carrera. No lo hagas
rm /p/a/t/h 2> /dev/null
no mantendrá el código de retorno ( echo $?
) como 0 si el archivo no existe. Eso haría que el tipo de trabajos de Jenkins fallara solo porque intentamos eliminar un archivo no existente.
noclobber
en bash), o tal vez modificar el archivo existente para que la redirección falle si el archivo existe (no evita la condición de carrera), pero todo lo que hará es hacer que los errores sean más sutiles.
Otro comando de una línea que utilicé es:
[ -e file ] && rm file
Puedes usar esto:
#!/bin/bash
file="file_you_want_to_delete"
if [ -f $file ] ; then
rm $file
fi
echo $?
no se obtiene 1 si el archivo no existe.
Si desea ignorar el paso para verificar si el archivo existe o no, puede usar un comando bastante sencillo, que eliminará el archivo si existe y no arrojará un error si no existe.
rm -f xyz.csv
-f
eso no arrojaría un error. Esta respuesta me ayudó, gracias.
Algo como esto funcionaría
#!/bin/sh
if [ -fe FILE ]
then
rm FILE
fi
-f comprueba si es un archivo normal
-e comprueba si el archivo existe
Introducción a if para más información
EDITAR: -e usado con -f es redundante, para usar -f solo debería funcionar también
-a
está en desuso, úselo en su -e
lugar.
-f
.
-e
de -fe
es redundante, ya que -f
también comprueba la existencia del archivo por lo que yo sé ..
if [ $( ls <file> ) ]; then rm <file>; fi
Además, si redirige su salida con, en >
lugar de >>
ello, sobrescribirá el archivo anterior
file
es algo así5 -lt 2
rm $my_file
, ¿verdad? ¿Qué caparazón estás usando?