3

Я создаю сценарий, который делает запрос curl на предопределенный сайт. К сожалению, скрипт находит 3 параметра, но curl не работает должным образом.

В чем проблема? Вот моя попытка.

random="$(cat something.txt)"
echo "ID: ${random} - File: $1 - Var: $2 - Cookie: $3"
url="$(curl -i -L -X POST --cookie 'info=$3' \
  -F 'var=$2' \
  -F 'submit=Send' \
  -F 'file[]=@$1' \
   https://example.com/upload?id=${random})"

Вторая строка с echo выводит правильные значения и тот же POST-запрос не создает никаких проблем при непосредственном использовании параметров, но curl дает сбой и выдает следующие ошибки:

Warning: setting file /my/path/to.file  
Warning: failed!

1 ответ1

2

В чем проблема?

Вам нужно использовать двойные кавычки.

Shellcheck проанализирует ваш скрипт и найдет ошибки:

$ shellcheck myscript

Line 1:
random="$(cat something.txt)"
^-- SC2148: Tips depend on target shell and yours is unknown. Add a shebang.

Line 3:
url="$(curl -i -L -X POST --cookie 'info=$3' \
^-- SC2034: url appears unused. Verify use (or export if used externally).
                                   ^-- SC2016: Expressions don't expand in single quotes, use double quotes for that.

Line 4:
  -F 'var=$2' \
     ^-- SC2016: Expressions don't expand in single quotes, use double quotes for that.

Line 6:
  -F 'file[]=@$1' \
     ^-- SC2016: Expressions don't expand in single quotes, use double quotes for that.

Line 7:
   https://example.com/upload?id=${random})"
                                 ^-- SC2086: Double quote to prevent globbing and word splitting.

$ 

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .