Проверка содержимого файла в Bash скрипте

У меня есть файл (называется version), который содержит текст:

version=31

Я хочу, чтобы bash скрипт проверил, содержит ли файл: version=31. Если да, то продолжить выполнение сценария; если нет, выйти и выдать сообщение: Image is not Image 31.

Как мне этого добиться?

-2
18.01.2017, 19:28
2 ответа

Предполагая, что это часть более крупного скрипта, который каким-то образом выполняет итерацию по нескольким файлам изображений с соответствующими файлами версий:

# image_fname: the filename of the image file
# image_version_fname: the filename of the image version info file
# image_version: an integer with the supposed version number

if ! grep -F -x -q "version=$image_version" "$image_version_fname"
then
  printf 'Warning: Image "%s" is not image %d\n' "$image_fname" "$image_version" >&2
  echo 'Warning: Version file contains:' >&2
  cat "$image_version_fname" >&2
fi

Флаги grep означают «соответствие как фиксированная строка, а не как регулярное выражение» ( -F ), «сопоставить всю строку» ( -x ) и «меня интересует только статус выхода, а не сами совпадения» ( -q ).

1
28.01.2020, 05:16

Что-то вроде этого?

fgrep -xq 'version=31' version || { echo "Image is not Image 31"; exit 1; }

Этот grep - это файл версия для строки версия = 31 , и если строка не найдена он отображает сообщение и закрывается. Если он найдет строку, сценарий продолжится.

Если вы ожидаете изменения версии, вы, вероятно, захотите заменить version = 31 переменной:

imgver="version=31"
fgrep -xq "$imgver" version || { echo "Image is not Image $imgver"; exit 1; }
1
28.01.2020, 05:16

Теги

Похожие вопросы