Попытка захватить и отобразить результат curl сводила меня с ума. Я наконец нашел обходной путь, но не понимаю, зачем он нужен.
Вот сценарий, который не работает:
#!/bin/bash
function echo_output() {
echo $@
}
CURL_OUTPUT=$(curl -sL --head www.google.com/foobar)
echo_output "$CURL_OUTPUT"
Вот сценарий, который работает: (без возврата каретки)
#!/bin/bash
function echo_output() {
OUT="${@//[$'\r']/\r}"
echo $OUT
}
CURL_OUTPUT=$(curl -sL --head www.google.com/foobar)
echo_output "$CURL_OUTPUT"
Что дает? Что особенного в символах новой строки и «$ @»? Спасибо за помощь.
Я не думаю, что с $ @ что-то не так.
Но в первом случае, чтобы чисто вывести эту переменную в качестве параметра, который вы назначили для curl с выводом, имеющим символы новой строки, в вашей функции echo_output () вам нужно заключить в кавычки «$ @», в данном случае «echo» (что, в свою очередь, только вывод своих позиционных аргументов в стандартный вывод и ничего более) правильно разделит слова -> аргументы (параметры). Как сказал Давуд, в этом случае лучше использовать printf.
Опять же в вашем случае:
function echo_output() {
echo "$@"
}
сделаю это.