이 명령줄(Centos 7)에 어떤 문제가 있나요?
if (grep ssl_certificate /etc/nginx/conf.d/platform.conf)
then echo $(grep ssl_certc /etc/nginx/conf.d/file.conf) > /etc/nginx/conf.d/file-certs.conf
fi
file.conf에는 ssl_certificate 및 ssl_certificate_key를 포함하는 두 줄이 있습니다. 기존 SSL 인증서를 /etc/nginx/conf.d/file.conf에서 /etc/nginx/conf.d/file-certs.conf로 이동해야 합니다.
답변1
아무것도 없다구문론적으로코드 조각에 오류가 있지만 일반적이지 않습니다.
파일에서 문자열이 발견되었는지 테스트 grep
하고 발견된 경우 일부 작업을 수행하려면 다음을 사용하십시오.
if grep -qwF ssl_certificate /etc/nginx/conf.d/platform.conf; then
options -q
, -w
그리고 quit( )을 -F
만들고 정규식( ) 대신 고정 문자열로 주어진 패턴을 일치시킵니다 . 추가적으로 , 완전한grep
-q
-F
-w
grep
단어. 이 경우 문자열은 ssl_certificate3
다음과 같습니다.아니요패턴을 일치시킵니다.
grep
파일에서 문자열이 발견되면 종료 상태 0이 반환되고 문의 본문이 if
실행됩니다.
성명서
echo $(somecommand)
일종의 쓸모가 없습니다.
명령 대체는 $(somecommand)
의 출력으로 대체되며 somecommand
쉘은 결과 문자열에 대해 토큰화 및 파일 이름 생성을 수행합니다(불필요할 수 있음). 방금 끝낼 수 있었기 때문에 그것을 사용해도 echo
소용이 없습니다.
somecommand
전체 if
내용:
if grep -qwF ssl_certificate /etc/nginx/conf.d/platform.conf; then
grep -wF ssl_certc /etc/nginx/conf.d/file.conf >/etc/nginx/conf.d/file-certs.conf
fi
(이것은 ssl_certc
완전한 단어라고 가정합니다. 그렇지 않으면 -w
단어에서 제거하십시오 grep
)
또는 단락 구문을 사용하여
grep -qwF ssl_certificate /etc/nginx/conf.d/platform.conf &&
grep -wF ssl_certc /etc/nginx/conf.d/file.conf >/etc/nginx/conf.d/file-certs.conf
이 됩니다.씌우다/etc/nginx/conf.d/file-certs.conf
파일이 존재하는지 여부. 다음 으로>
변경>>
추가의덮어쓰지 않으려면 파일이 대신 기록됩니다.