У меня есть скрипт 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: команда не найдена
Почему позиционные аргументы отбрасывают все это?