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