2017-11-28 22 views
3

나는 컬을 사용하여 페이지의 응답 코드를 얻으려면이 명령을 사용하고 있습니다 : 응답 코드가 200입니다터미널에 컬이있는 "if"문 사용?

curl -s -o /dev/null -w "%{http_code}" 'https://www.example.com' 

경우, 내 컴퓨터에서 특정 파일을 삭제합니다. 200이 아닌 경우 아무 것도 수행하지 않아야합니다.

가장 쉬운 방법은 무엇입니까?

답변

5

(command substitution을 통해) 셸 변수에 결과를 저장 한 다음 간단한 if and [[ command으로 값을 테스트 할 수 있습니다. 예를 들어, bash에 : 당신이 원하는 모든 간단한 rm 경우

#!/bin/bash 
code=$(curl -s -o /dev/null -w "%{http_code}" 'https://www.example.com') 
if [[ $code == 200 ]]; then 
    rm /path/to/file 
    # other actions 
fi 

, 당신은 그것을 줄일 수 있습니다 : 일반적인 POSIX 쉘에서

#!/bin/bash 
[[ $code == 200 ]] && rm /path/to/file 

, 당신은 덜 유연를 사용해야합니다

#!/bin/sh 
code=$(curl -s -o /dev/null -w "%{http_code}" 'https://www.example.com') 
if [ "$code" = 200 ]; then 
    rm /path/to/file 
fi 

추가 : [ 명령은 변수를 인용 전체 코드 클래스 (예 : 2xx), 와일드 카드를 사용할 수 있습니다

#!/bin/bash 
[[ $code == 2* ]] && rm /path/to/file 

case 명령 (예 here을).

+1

삭제 된 대답에 @randomir이 지적한 것처럼, 'curl'이 404에서도 성공하기 때문에 수동 2xx 검사가 필요합니다 (종료 코드를 확인하는 대신). –