다운로드한 파일을 다음과 같이 로그에 저장합니다.
[source] filename
파일을 여러 번 다운로드하지 않으려면 다음 [source] filename
을 grep합니다.
if ! grep "$signature" downloaded.log > /dev/null; then
wget ...
fi
하지만grep으로 라인을 시작하면 [
원하는 대로 작동하지 않습니다.
signature="[source] filename"
echo $signature | grep "$signature"
echo $signature | grep "\$signature" #trying to escape first bracket
둘 다 아무것도 반환하지 않습니다.
스마트한 솔루션이 있나요?
()
괄호 , 중괄호 {}
또는 다른 것으로 전환하기 위해 코드를 변경할 필요가 없다면 좋을 것입니다.<>
답변1
먼저 변수를 인용한 다음 -F
--fixed-strings
대괄호가 정규식 메타 문자로 해석되지 않도록 스위치를 사용해야 합니다.
echo "$signature" | grep -F "$signature"
-q
--quiet
그런 다음 스위치 도 사용해야 하므로 grep
첫 번째 항목이 나타나면 종료하십시오. 이는 단지 속도상의 이유 때문입니다.
if ! grep -Fq "$signature" downloaded.log; then
wget ...
fi