прочитать первую строку файла и сравнить ее со строкой в ​​файле оболочки

прочитать первую строку файла и сравнить ее со строкой в ​​файле оболочки

Мне нужно прочитать первую строку файла и сопоставить ее с текстом. Если текст совпадает, мне нужно выполнить определенную операцию.

Проблема возникает, если команда не может сравнить переменную со строкой.

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

Блок if не работает. Я думаю, что значение, которое я захватываю в строке 1, имеет некоторые проблемы.

решение1

Скорее всего, первая строка содержит непечатаемые символы или начальные или конечные пробелы или пустые символы, отличные от пробела (вы забыли заключить переменную в кавычки при передаче в echo). Вы также можете сначала очистить ее:

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

Связанный контент