특정 파일의 각 줄을 다음 문자열과 비교하고 싶습니다.
#orb_plugins = ["local_log_stream", "iiop_profile", "giop", "iiop"];
("file.txt"에는 이 특정 줄이 포함되어 있습니다)
나는 특수 문자 앞에 "\"를 붙여서 다음을 시도했습니다.
IFS=''
while read -r line
do
if [ "$line" == "#orb_plugins = \[\"local_log_stream\", \"iiop_profile\", \"giop\", \"iiop\"\];" ]
then
echo "String found. Do remaining steps"
fi
done < file.txt
답변1
작업에 적합한 도구, 즉 다음을 사용하는 것은 어떻습니까 grep
?
grep -qxFf- file.txt <<\IN && printf %s\\n "String found. Do remaining steps"
#orb_plugins = ["local_log_stream", "iiop_profile", "giop", "iiop"];
IN
일치하는 항목이 발견되면 파일 읽기가 중지됩니다. 또한 (평균적으로) loop 보다 약 100배 빠릅니다 while read
.
답변2
가장 쉬운 방법은 오른쪽에 작은따옴표를 사용하는 것입니다.
if [ "$line" == '#orb_plugins = ["local_log_stream", "iiop_profile", "giop", "iiop"];' ]
이렇게 하면 일치하는 문자열이 문자 그대로 해석됩니다.
큰따옴표 사용을 선호하는 경우 대괄호( []
)를 이스케이프하면 안 되고 큰따옴표( ""
)만 이스케이프해야 합니다.
if [ "$line" == "#orb_plugins = [\"local_log_stream\", \"iiop_profile\", \"giop\", \"iiop\"];" ]