Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Json 通过curl+scrot+xclip上传图像/发出发帖请求_Json_Bash_Post_Curl - Fatal编程技术网

Json 通过curl+scrot+xclip上传图像/发出发帖请求

Json 通过curl+scrot+xclip上传图像/发出发帖请求,json,bash,post,curl,Json,Bash,Post,Curl,我试图编写一个简单的bash脚本,其工作原理与类似,但使用源代码 基本上,imgur屏幕截图所做的是当脚本初始化时,它会打开scrot-select-select选项,用鼠标以交互方式选择窗口或矩形。然后,一旦您拍摄了定义区域的屏幕截图,它会将保存的屏幕截图上传到imgur,或者在我的情况下,使用ziggi/zimg主机上传到我的自托管站点,然后使用xclip将所需的结果数据最终通过URL链接复制到您的剪贴板 这是我的基本bash脚本,我现在要执行这个目标: #!/bin/bash funct

我试图编写一个简单的bash脚本,其工作原理与类似,但使用源代码

基本上,imgur屏幕截图所做的是当脚本初始化时,它会打开scrot-select-select选项,用鼠标以交互方式选择窗口或矩形。然后,一旦您拍摄了定义区域的屏幕截图,它会将保存的屏幕截图上传到imgur,或者在我的情况下,使用ziggi/zimg主机上传到我的自托管站点,然后使用xclip将所需的结果数据最终通过URL链接复制到您的剪贴板

这是我的基本bash脚本,我现在要执行这个目标:

#!/bin/bash

function uploadImage {
        curl -s -F files[]="@$1" http://ziggisite.com/upload.php
}

if [ "$#" -ne 1 ]; then
        notify-send "Upload error"
else
        uploadImage $1 | xclip -selection c
        notify-send "Upload complete"
fi
当我使用以下命令启动这个脚本时:scrot-e'./img.sh$f',它成功地上传了一个屏幕截图,但xclip没有将正确的数据复制到我的剪贴板,而是复制了所有输出的内容

作为参考,ziggi/zimg主机响应如下所示:

[
    {
        "name":"image1.jpg",
        "type":2,
        "size":
        {
            "width":420,
            "height":336,
            "filesize":26834
        },
        "error":
        {
            "upload":0,
            "type":0,
            "size":0
        },
        "url":"ccc762c11f336cfa9fdbcc1b7ea4c1a3.jpg"
    }
]
基本上,一旦脚本运行,我需要它复制响应的url部分,然后throwhttp://ziggisite.com 在它的开始,所以复制到我的剪贴板上的最终数据看起来像是什么likehttp://ziggisite.com/ccc762c11f336cfa9fdbcc1b7ea4c1a3.jpg.


如果有人能提供一些资源或帮助,那就太好了

根据OP的评论,我认为他/她可以使用jq之类的JSON解析器。那么,在jq中有一个解决方案。假设我们将示例响应放在response.json中,然后


这里-r选项用于原始输出,即不带JSON的引号。

获取JSON解析器。我最喜欢的是。@4ae1e1我抓起jq并试图用它来解析URL值,但是我能得到的最接近的结果是整个结果,其中包括{URL:ccc762c11f.jpg}。我正在使用jq“[0]{url}”。我怎样才能把它改成只抓取ccc762c11f.jpg你读过说明书了吗?jq的DSL非常简单。当你面对DSL时,你不会猜测或发明你自己的语法;相反,您可以阅读f*手册。无论如何,我会为你的具体情况写一个答案。
<response.json jq -r '.[0].url'
ccc762c11f336cfa9fdbcc1b7ea4c1a3.jpg
<response.json jq -r '"http://ziggisite.com/" + .[0].url'
http://ziggisite.com/ccc762c11f336cfa9fdbcc1b7ea4c1a3.jpg