구문 분석된 Curl 출력을 변수에 저장

구문 분석된 Curl 출력을 변수에 저장

이에 대한 도움이 필요합니다. 따라서 이 명령은 작동하고 내가 원하는 정보, 즉 Last-Modified 응답 헤더를 표시합니다.

ubuntu:~$ curl -s -I "https://someurl/?someparam" | grep -Fi Last-Modified

반품:

**last-modified: Tue, 22 Mar 2022 17:33:35 GMT**

내가 원하는 것은 그것을 변수에 저장하는 것입니다. "Last-Mod"라고 말한 다음 현재 날짜와 비교하여 지난 1-2일 동안 콘텐츠가 새로 고쳐졌는지 확인합니다(파일입니다). 새로 고쳐졌다면 계속 다운로드하고 싶습니다. 나는 다음과 같은 다양한 구문을 시도했습니다.

Last-Mod="$(curl -s -I https://someurl/?parama=a&paramb=b | grep -Fi Last-Modified)"

하지만 계속 오류가 발생합니다. 어떤 충고?

고마워요, 제프

답변1

댓글에서 언급했듯이 &URL에 따옴표가 없으면 오류가 발생할 수 있습니다. 이는 이전의 모든 것을 백그라운드 프로세스로 실행하려고 시도한 다음 이후의 모든 것을 새 명령으로 실행하려고 시도합니다.

URL을 인용하거나 & 기호를 이스케이프 처리해야 합니다.

Last-Mod="$(curl -s -I 'https://someurl/?parama=a&paramb=b' | grep -Fi Last-Modified)"

바라보다3.2.4 명령어 목록

명령이 제어 연산자 "&"에 의해 종료되면 쉘은 서브쉘에서 명령을 비동기적으로 실행합니다. 이를 백그라운드에서 명령 실행이라고 하며 이러한 명령을 비동기 명령이라고 합니다. 쉘은 명령이 완료될 때까지 기다리지 않고 상태 0(true)을 반환합니다.

답변2

Bash의 변수 이름에는 하이픈( -)을 포함할 수 없습니다.

이름

문자, 숫자, 밑줄로만 구성되고 문자나 밑줄로 시작하는 단어입니다. 이름은 쉘 변수 및 함수 이름으로 사용됩니다. 식별자라고도 합니다.

(에서배쉬 문서). 작업을 효과적으로 수행하려면 이름을 다음 Last-Mod으로 바꾸십시오 .Last_Mod

관련 정보