Как я могу использовать аргумент в строке в функции bash - PullRequest
0 голосов
/ 19 марта 2019

Я пытаюсь:

ctests() {
    curl -X POST \
        http://route.to.host/cucumber/execute-tests \
        -H 'Authorization: Basic xxxxxxxxxxxxxxxxxxxxx' \
        -H 'Content-Type: application/json' \
        -H 'cache-control: no-cache' \
        -d '{ "text": "cucumber! alltests products=$1" }'
}

И хочу назвать это как

> ctests someproduct

Но $ 1 не решит.Я пробовал $ {1}, но это то же самое.Есть ли хорошее решение для этого?

1 Ответ

2 голосов
/ 19 марта 2019

$1 не разрешается, потому что вы используете одиночные отметки ', которые запрещают переменное разрешение.

вместо этого используйте двойные тики (") (вам придется избегать двойных кавычек внутри двойных кавычек или использовать одинарные кавычки в двойных кавычках; в зависимости от вашего контекста)

ctests() {
    curl -X POST \
        http://route.to.host/cucumber/execute-tests \
        -H 'Authorization: Basic xxxxxxxxxxxxxxxxxxxxx' \
        -H 'Content-Type: application/json' \
        -H 'cache-control: no-cache' \
        -d "{ \"text\": \"cucumber! alltests products=$1\" }"
}

цитата bash(1):

Цитирование

[...]

Заключение символов в одинарные кавычки сохраняет буквальное значение каждого символа в кавычках. Одиночная кавычка может отсутствовать между одинарными кавычками, даже если ей предшествует обратная косая черта.

Заключение символов в двойные кавычки сохраняет буквальное значение всех символов в кавычках, за исключением $ [...]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...