Yahoo Answers is shutting down on May 4th, 2021 (Eastern Time) and beginning April 20th, 2021 (Eastern Time) the Yahoo Answers website will be in read-only mode. There will be no changes to other Yahoo properties or services, or your Yahoo account. You can find more information about the Yahoo Answers shutdown and how to download your data on this help page.

¿Por qué no hace la validación el if de mi script en bash?

Tengo que hacer un script que valide si un archivo esta vacio o no, pero el if que tengo no valida; le pase el archivo k le pase, no entra al else:

export CINTA=$(find "$(pwd)" -type f -name datAMA*.bin)

if [ ! -s CINTA ]; then

echo -e "\e[00;31mEl cuerpo $CINTA de la cinta esta vacio, la cinta no debe enviarse\e[00m"

else

echo "La cinta tiene datos"

fi

si le quito la negacion al if, ya sólo ejecuta el else...

2 Answers

Rating
  • 6 years ago
    Favorite Answer

    Lo que pasa es que en tu condición necesitas indicar que es una variable con $ y ademas tienes que rodearla con comillas ("$CINTA"). Otra cosa, no necesitas el export, eso es solo para variables de entorno.

    Intenta con esto:

    CINTA=$(find "$(pwd)" -type f -name datAMA*.bin)

    if [ ! -s "$CINTA" ]; then

    . . .

    Código completo: http://pastebin.com/VSPpXLcD

    #!/bin/bash

    CINTA=$(find "$(pwd)" -type f -name datAMA*.bin)

    if [ ! -s "$CINTA" ]; then

    echo -e "\e[00;31mEl cuerpo $CINTA de la cinta esta vacío, la cinta no debe enviarse\e[00m"

    else

    echo "La cinta tiene datos"

    fi

    Salida:

    Imagen con mejor calidad: http://i.imgur.com/Upjlyxy.png

    Attachment image
  • 6 years ago

    Gracias por tu apoyo, yo asigno la mejor respuesta al menos dos días después de hacer la pregunta, pero no olvido a quien me ayuda.

    Probé lo que dices, pero sigue sin reconocer los archivos: Le paso

    -rw-r--r-- 1 ijanez cdrama 160 Apr 29 09:28 datAMA570.bin

    -rw-r--r-- 1 ijanez cdrama 160 Apr 29 09:28 colaAMA570

    -rw-r--r-- 1 ijanez cdrama 0 Apr 29 09:42 hdrAMA407 #En CEROS

    Y me devuelve

    El cuerpo de la cinta esta vacio, la cinta no debe enviarse

    La cola de La cinta tiene datos

    La cabecera de La cinta tiene datos

    Cuando debería decir que el cuerpo y la cola tienen datos y la cabecera está vacía.

    Agradezco mucho el apoyo... ¿No estará mal mi lógica?

    PD intenté ver el código que ma hiciste favor de dejar, pero tengo bloqueada esa página en el trabajo u.u

Still have questions? Get your answers by asking now.