BASH 스크립트를 사용하여 변경 사항을 모니터링하고있는 간단한 텍스트 파일이 있습니다. 찾고있는 텍스트는 줄의 시작 부분에서 시작하거나 공백으로 시작할 수 있습니다. 내 검색은 매우 간단합니다.GREP : 대화 형 대 crontab
#!/bin/bash
value=`/bin/grep "^\s*mystring:" mytextfile`
echo "found: [$value]" >> myoutput.log
이 명령 줄에서 실행할 때 잘 작동하지만 crontab을 구성 스크립트에서 호출하면 작동하지 않습니다. 내 문제에 대한 해결 방법이 있지만 여전히 crontab 내에서 grep을 호출 할 때 캐럿 (^) 문자와 공백 (\ s *) 문자를 함께 사용하는 이유를 설명 할 수 없습니까?
변경 사항 PATH 및 환경이 아무런 영향을 미치지 않는 것 같습니다. 어떤 아이디어?
... 의견 주셔서 감사합니다! crontab을 구성되었을 그렙에
- 경로
해결 구문을 사용 하였다
value=`/bin/grep -E '^[[:space:]]*mystring:' myfile`
3 가지의 조합이 필요합니다.
- 작은 따옴표를 정규식
- 그렙 -E를 사용하여 확장 된 정규 표현식
- [[: 공간 :]]! 대신 \ S 공백 문자의
난 아직 확실하지 않다 왜 [: space :]]가 대화식으로 작동 할 때 \ s가 crontab에 없을 때 작동합니다.
어떻게 실패합니까? 결과물로 뭐하고 있니? 완전한 구성 (crontab + 스크립트)을 보여줄 수 있으며 우리가하려는 일을 알려주십시오. – larsks
'\ s'을 사용하면 안됩니다. '/ :/grep -E '^ [[: space :]] * mystring'mytextfile' – Sorpigal
당신은'/ bin/grep'을 사용하고 있습니까? 두 곳에서? 대부분의 경우 쉘 스크립트에서 grep의 최신 버전을 사용하고 있으며 기본적으로 regex를 지원합니다. – anubhava