2013-05-15 4 views
3

URL 내에 curl 명령어로 변수를 넣는 것에 대한 다른 질문이 있습니다.변수를 컬링으로 전달하는 방법

# MODE=-v 
MODE='-sS -w "\nEffective URL: %{url_effective} \nSize: %{size_download} \nTotal time: %{time_total} \nRedirect URL: %{redirect_url}"' 

을 등과 같은 여러 가지 컬 요청 중 사용 :

나는과 같이 값을 교환하는 스크립트의 상단에 정의 된 변수를 갖고 싶어

PAGE=$(curl $MODE --include --location --config curl.config $TARGET1) 

불행하게도,의 없음 시도한 인용 부호 ($ MODE 또는 $ TARGET1) 또는 ${MODE}의 변형은 -w 옵션을 받아들이고 $ PAGE의 맨 아래에 나타납니다. $MODE을 긴 버전으로 바꾸면 올바르게 작동합니다.

어떻게 작동시킬 수 있습니까?

답변

2

또 다른 (유사) 방법. URI과 같은 변수를 인용 할 것을 제안 해주십시오. 두 번째 요점은 대문자 변수 이름에주의해야한다는 것입니다. 그들은 환경 변수 등으로 쉽게 추락 할 수 있습니다.

#!/bin/bash 

url="$1" 

w=("-sS" 
"-w 
Effective URL: %{url_effective} 
Size   : %{size_download} 
Total time : %{time_total} 
Redirect URL : %{redirect_url}" 
) 

page="$(curl "${w[@]}" --include --location --config curl.config "$url")" 
+0

uc 이름에 대한 코멘트를 포함 해 주셔서 고마워요. 이 해결책은 질문에 더 가깝게 보인다. – David

2

한 가지 방법은 -w 문자열 대신 하나의 문자열로 전달되는 각각의 공간에 분할되도록이

w=(
    '\nEffective URL: %{url_effective}' 
    '\nSize: %{size_download}' 
    '\nTotal time: %{time_total}' 
    '\nRedirect URL: %{redirect_url}' 
) 
curl -Ss --include --location --config curl.config -w "${w[*]}" icanhazip.com 

당신이 당신의 방식으로 그것을 할

, 단어 분할이 일어나고있다 할 수 있습니다.

$ set -x 

$ : curl $MODE --include --location --config curl.config icanhazip.com 
+ : curl -sS -w '"\nEffective' URL: '%{url_effective}' '\nSize:' '%{size_download}' '\nTotal' time: '%{time_total}' '\nRedirect' URL: '%{redirect_url}"' --include --location --config curl.config icanhazip.com 
+0

니스. 왜 MODE 변수가 올바르게 확장되지 않는지 아십니까? – David

+0

Steven, 편집 코드와 두 번째 코드 블록을 이해할 수 없습니다. '$ set -x'는 무엇을하고 있습니까? 둘째, 2 번줄은 무엇입니까? 그건 내 원래처럼 ... – David

관련 문제