lê a primeira linha do arquivo e compara com uma string no arquivo shell [duplicata]

0

Eu preciso ler a primeira linha de um arquivo e combiná-lo com um texto. Se o texto corresponder, preciso fazer uma determinada operação.

O problema é se o comando não conseguir comparar a variável com a string.

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

O bloco if não está funcionando. Eu acho que o valor que estou capturando na linha 1 tem alguns problemas.

    
por romil gaurav 18.04.2017 / 12:07

1 resposta

1

O mais provável é que a primeira linha contenha caracteres não imprimíveis ou espaços em branco iniciais ou finais ou caracteres em branco que não sejam espaço (você esqueceu de citar a variável quando passada para echo ). Você também pode limpá-lo primeiro:

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
    
por 18.04.2017 / 12:31