Вопрос:
Есть и другие вопросы о том, как вставить переменную в curl-команду в URL-адрес.
Я хочу, чтобы переменная, определенная в верхней части script, меняла значения следующим образом:
# 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 на длинную версию.
Как это можно заставить работать?
Лучший ответ:
Другой (аналогичный) способ. Также предложит вам указать такие переменные, как 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»)» Ответ №1
Один из способов сделать это
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
Когда вы делаете это по-своему, происходит разбиение слов, поэтому строка -w разбивается на каждое пространство, а не передается как одна строка.
$ 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