验证 Bash 脚本中的文件内容

验证 Bash 脚本中的文件内容

我有一个文件(名为version),其中包含以下文本:

version=31

我想要一个bash脚本来检查文件是否包含:version=31。如果是,则继续执行脚本;如果没有,请退出并显示一条消息:Image is not Image 31

我怎样才能做到这一点?

答案1

假设这是一个较大脚本的一部分,该脚本以某种方式迭代多个具有关联版本文件的图像文件:

# 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

标志 togrep表示“匹配为固定字符串,而不是正则表达式”( -F)、“匹配整行”( -x) 和“我只对退出状态感兴趣,而不是匹配本身”( -q)。

答案2

像这样的东西吗?

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

这是字符串的grep文件,如果找不到该字符串,则会显示消息并退出。如果它确实找到了该字符串,脚本将继续。versionversion=31

如果您预计版本会发生变化,您可能需要替换version=31为变量:

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

相关内容