我有一个文件(名为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
文件,如果找不到该字符串,则会显示消息并退出。如果它确实找到了该字符串,脚本将继续。version
version=31
如果您预计版本会发生变化,您可能需要替换version=31
为变量:
imgver="version=31"
fgrep -xq "$imgver" version || { echo "Image is not Image $imgver"; exit 1; }