lea la primera línea del archivo y compárela con una cadena en el archivo shell

lea la primera línea del archivo y compárela con una cadena en el archivo shell

Necesito leer la primera línea de un archivo y relacionarla con un texto. Si el texto coincide, necesito realizar cierta operación.

El problema es si el comando no puede comparar la variable con la cadena.

file_content=$(head -1 ${file_name})
echo $file_content
if [[ $file_content = 'No new data' ]]; then
    echo "Should come here"
fi
echo $file_content
if [ "${file_content}" = "No new data" ]; then
  echo "Should come here"
fi

El bloque if no funciona. Creo que el valor que estoy capturando en la línea 1 tiene algunos problemas.

Respuesta1

Lo más probable es que la primera línea contenga caracteres no imprimibles o espacios en blanco al principio o al final o caracteres en blanco distintos del espacio (olvidó citar la variable cuando la pasó a echo). También puedes limpiarlo primero:

content=$(
  sed '
    s/[[:space:]]\{1,\}/ /g; # turn sequences of spacing characters into one SPC
    s/[^[:print:]]//g; # remove non-printable characters
    s/^ //; s/ $//; # remove leading and trailing space
    q; # quit after first line' < "$file_name"
)

if [ "$content" = 'No new data' ]; then
  echo OK
fi

información relacionada