Используйте параметры в скрипте bash, используя curl

315
Timmy

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

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

random="$(cat something.txt)" echo "ID: $ - 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=$)" 

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

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

1 ответ на вопрос

2
DavidPostill

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

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

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=$)" ^-- SC2086: Double quote to prevent globbing and word splitting.  $  
Спасибо за предложение, к сожалению, я не понимаю, как процитировать параметр файла `\" file [] = @ $ 1 \ "` не работает Timmy 5 лет назад 0
@ Тимми, почему ты убегаешь от "?" DavidPostill 5 лет назад 1
Потому что строка начинается с `url =" $ ... ` Timmy 5 лет назад 0
Кстати, я пытался удалить побег персонажей, теперь это работает как шарм, спасибо! Я должен больше изучать разрешение цитаты в bash :) Timmy 5 лет назад 0
@ Тимми . Я не знаю, как это исправить. DavidPostill 5 лет назад 0

Похожие вопросы