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
grep
"정규 표현식이 아닌 고정 문자열로 일치"( -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; }