Позиционные аргументы в Bash Script ломают другие команды - PullRequest
0 голосов
/ 17 октября 2019

У меня есть скрипт bash, в котором я хочу взять аргументы командной строки, а затем выполнить с ними несколько команд curl. Однако, что-то очень странное происходит в зависимости от моего порядка операций.

Это прекрасно работает (но мне нужно жестко закодировать мой путь):

OAUTH_TOKEN=$(curl -s -S -X POST 'https://dummy-url.com/oauth2/token' -H 'cache-control: no-cache' -H 'content-type: application/x-www-form-urlencoded' -u ${CLIENT_ID}:${CLIENT_SECRET} -d 'grant_type=client_credentials' | jq '. | .access_token' | tr -d '"')
PATH_ID=$(curl -w '\n' -X POST "https://dummy-url.com/internal-operations/lockboxes/${ID}/paths" -H "Authorization: Bearer ${OAUTH_TOKEN}" -H "Accept: application/json;v=1" -H "Content-Type: application/json" -d "{ \"path\": \"HardcodedPath\"}\" }" | jq '. | .pathId' | tr -d '"')

PATH=$1
SECRET=$2
echo $PATH # outputs path
echo $SECRET # outputs secret

Это не работает:

PATH=$1
SECRET=$2
echo $PATH # outputs path
echo $SECRET # outputs secret

OAUTH_TOKEN=$(curl -s -S -X POST 'https://dummy-url.com/oauth2/token' -H 'cache-control: no-cache' -H 'content-type: application/x-www-form-urlencoded' -u ${CLIENT_ID}:${CLIENT_SECRET} -d 'grant_type=client_credentials' | jq '. | .access_token' | tr -d '"')
PATH_ID=$(curl -w '\n' -X POST "https://dummy-url.com/internal-operations/lockboxes/${ID}/paths" -H "Authorization: Bearer ${OAUTH_TOKEN}" -H "Accept: application/json;v=1" -H "Content-Type: application/json" -d "{ \"path\": \"${PATH}\" }" | jq '. | .pathId' | tr -d '"')

И я получаю

curl: команда не найдена jq: команда не найдена tr: команда не найдена

Почему позиционные аргументы отбрасывают все это?

1 Ответ

1 голос
/ 17 октября 2019

Переменные 'PATH' имеют особое значение (разделенный двоеточиями список каталогов для поиска команд). Используйте 'MY_PATH' или другое имя, которое не совпадает со стандартным env var. См. Man environment для (частичного) списка переменных с прикрепленными к ним специальными функциями (USER, LOGNAME, HOME, PATH, SHELL, ...)

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