【问题标题】:Running Curl in Run Shell Script with arguments in Automator在 Automator 中使用参数运行 Shell 脚本中的 Curl
【发布时间】:2016-09-17 01:18:21
【问题描述】:

我正在尝试通过“运行 Shell 脚本”在 Automator 中发送带有参数的 curl 命令,但没有运气。我正在使用 /bin/bash 并将信息作为参数传递。这是我的脚本,但不断从 IFTTT 获得Bad Request。我知道这与没有正确使用参数有关(如果我只是输入 "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

谢谢!

【问题讨论】:

    标签: bash shell curl automator ifttt


    【解决方案1】:

    您应该传递一个有效的 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 循环的简短版本在$@ 上运行)。

    【讨论】:

    • 太好了,谢谢!当我们这样做时,将 $1 从 /folder/subfolder/subfolder/etc/etc/file.mp4 解析为 file.mp4 的最佳方法是什么?
    • @PJPalomaki basename "$1"
    猜你喜欢
    • 2020-05-20
    • 2014-09-29
    • 2016-02-29
    • 1970-01-01
    • 2021-04-24
    • 1970-01-01
    • 2020-10-05
    • 2020-05-24
    • 2021-12-16
    相关资源
    最近更新 更多