#bash #curl #cookies
#bash #curl #файлы cookie
Вопрос:
По правде говоря, я сбит с толку — я думал, что уже понял основы bash, но это не так.
ПРОБЛЕМА: я хочу использовать оболочку curl, как показано ниже, для отправки POST-запроса к api, но когда я использую оболочку, ничего не происходит
Оболочка отлично работает в других случаях (т. Е. $ {_CURL} -s -o /dev/null -w % {http_code} $ {URL})
IDEA1: итак, я подумал, что это может быть связано с кавычкой вокруг объекта json, с которым у меня были проблемы в прошлом, поэтому в итоге я вставил «‘$ {JSON}'», что не сработало
ИДЕЯ 2: в оболочке curl я поместил все аргументы («-b $ {COOKIES} $ @») в кавычки, но ничего
обертка curl
#!/bin/bash
# sets headers to use cookies
# ${Cookies} is set and translates to an absolute path of ./cookie-file.txt
if [ -f "${COOKIES}" ]; then
curl -b "${COOKIES}" $@
else
curl $@
fi
Объект Json, потому что я считаю его важным
JSON=$( jq -n -r
--arg login $LOGIN
--arg pass ${PASS_INPUTS[@]}
'{username: $login, password: $pass}')
идентификатор файла использует его в
#JSON is located right above the following line
#_CURL being the path to the wrapper i exported
# Does not even send a request to the URL at $V2/auth/login
RESPONSE=$($_CURL -s
--header "Content-Type: application/json"
--request POST
--data "$JSON"
$ARGS
"${V2}/auth/login")
echo $RESPONSE
#---------------------------------------------------------------------------------------------
# This is what i had previously but Id rather not
# works just fine
[ ! -f "cookie-file.txt" ] amp;amp; ARGS="-c cookie-file.txt" || ARGS="-b cookie-file.txt"
RESPONSE=$(curl -s
--header "Content-Type: application/json"
--request POST
--data "$JSON"
$ARGS
"${V2}/auth/login")
echo $RESPONSE
Комментарии:
1. ShellCheck автоматически обнаруживает эту и другие распространенные проблемы
2. слышал об этом раньше, но вот мы здесь — не самые яркие в lowlife @thatotherguy
Ответ №1:
Основная проблема заключается в $ @, попробуйте :
#!/bin/bash
# sets headers to use cookies
# ${Cookies} is set and translates to an absolute path of ./cookie-file.txt
if [ -f "${COOKIES}" ]; then
curl -b "${COOKIES}" "$@"
else
curl "$@"
fi
Без двойных кавычек аргументы с пробелами обрабатываются неправильно.
Комментарии:
1. СПАСИБО, добрый боже на небесах, благослови этого человека за его неортодоксальное знание bash @Philippe
2. рад, что я указал на это в названии, неправильное использование кавычек или их отсутствие…