2016-09-16 5 views
0

Я пытаюсь отправить команду curl в Automator с помощью «Run Shell Script» с аргументами, но не повезло. Я использую/bin/bash и передаю информацию в качестве аргументов. Вот мой сценарий, но продолжайте получать Bad Request от IFTTT. Я получаю, что это связано с неправильным использованием аргументов (если я просто положил "value1":"test", он отлично работает), как мне форматировать $ 1?Запуск Curl в Run Shell Script с аргументами в Automator

for f 
do 
    curl -X POST -H "Content-Type: application/json" -d '{"value1":$1}' https://maker.ifttt.com/trigger/Automator/with/key/heremykey 
done 

Спасибо!

ответ

2

Вы должны пройти действительный JSON. не Там будет никакой встроенная поддержка JSON в Bash, так что вы должны использовать внешние инструменты, такие как PHP или Node:

#!/bin/bash - 

function json_encode { 
    printf "$1" | php -r 'echo json_encode(stream_get_contents(STDIN));' 
} 

for f 
do 
    value=`json_encode "$f"` 
    curl -X POST -H "Content-Type: application/json" -d "{\"value1\":$value}" \ 
    https://maker.ifttt.com/trigger/Automator/with/key/heremykey 
done 

Сценарий должен отправить {"value1": ...} строку для каждого элемента в [email protected] (из-за короткие версия цикла for работает на [email protected]).

+0

Отлично, спасибо! В то время как мы на нем, лучший способ разобрать $ 1 из '/ folder/subfolder/subfolder/etc/etc/file.mp4' в' file.mp4'? –

+1

@PJPalomaki 'basename" $ ​​1 "' –

Смежные вопросы