运行ning Curl in 运行 Shell Automator 中带有参数的脚本

Running Curl in Run Shell Script with arguments in Automator

我试图通过 'Run Shell Script' 在 Automator 中发送带有参数的 curl 命令,但没有成功。我正在使用 /bin/bash 并将信息作为参数传递。这是我的脚本,但不断从 IFTTT 获取 Bad Request。我知道这与没有正确使用 args 有关(如果我只是输入 "value1":"test" 它工作正常),我应该如何格式化 $1?

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

谢谢!

您应该传递一个有效的 JSON。 Bash中没有内置的JSON支持,所以需要使用外部工具,比如PHP,或者Node:

#!/bin/bash -

function json_encode {
  printf "" | 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 循环的短版本在 $@ 上运行)。