使用Automator中的参数在Run Shell Script中运行Curl

时间:2016-09-16 16:38:52

标签: bash shell curl automator ifttt

我试图通过'运行Shell脚本'发送一个curl命令,但是没有运气。我使用/ bin / bash并将info作为参数传递。这是我的脚本,但继续从IFTTT获得Bad Request。我没有正确使用args(如果我只是把"value1":"test"它工作正常),我应该如何格式化$ 1?

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

谢谢!

1 个答案:

答案 0 :(得分:2)

您应该传递有效的JSON。 Bash中没有内置的JSON支持,因此您需要使用外部工具,例如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": ...}中的每个项目发送$@字符串(因为for循环的简短版本在$@上运行)。