У меня есть вопрос о том, как предоставить переменную, заключенную в '"..."'
, ожидаемый формат для значения, считываемого сценарием оболочки с использованием read -d '' var <<- EOF
.
Обзор
Я хочу использовать эту jq
служебную библиотеку: jq-hopkok . В частности, сценарий оболочки bash to-components.sh , который использует jq
для анализа URL-адресов в своих компонентах.
Этот сценарий великолепен, за исключением того, что мне не понятно, какиспользуйте этот скрипт, передав ему переменную $URL
. Похоже, я могу передать этот сценарий только со статической строкой URL, которая должна быть заключена в двойные кавычки , а затем снова заключена в одинарные кавычки , например, '"..."'
.
Пример вызова to-components.sh со статическим значением URL '"https://..."'
From README.md :
#!/usr/bin/env bash
# URL to components
echo '"https://server.example.com/deep/path/file.ext?with-a-parameter=true#and-a-fragment"' | ./to-components.sh
Пример частичного результата
{
"value": "https://server.example.com/deep/path/file.ext?with-a-parameter=true#and-a-fragment",
"valid": true,
"scheme": {
"value": "https",
"valid": true
},
Сценарий оболочки to-components.sh читает эту строку URL со специальными кавычками , которая должна быть обернута '"..."'
, иначе не удастся разобрать на компоненты:
#!/usr/bin/env bash
set -e
# Split up a URL string to an object with the URL components.
read -d '' toComponents <<-'EOF' || true
...
EOF
cat | jq "$toComponents"
Желаемая цель
Я быЯ хотел бы вызвать этот сценарий оболочки со строкой URL с переменной, например, я не уверен, как структурировать переменную ???${URL}???
, чтобы ее можно было проанализировать с помощью сценария оболочки:
#!/usr/bin/env bash
URL="https://server.example.com/deep/path/file.ext?with-a-parameter=true#and-a-fragment"
# URL to components
echo ???${URL}??? | ./jq-hopkok/src/url/to-components.sh
Я перепробовал много подходов, но ни один из них не работает. Все в результате с ошибкой: parse error: Invalid numeric literal ...
Спасибо
Любые предложения очень ценятся!