我正在尝试编写一个与jomo/imgur-screenshot类似的简单bash脚本,但使用ziggi/zimg-host源代码。
基本上imgur-screenshot的作用是当脚本初始化时,它会打开scrot -select
(-select选项以交互方式用鼠标选择一个窗口或矩形)。然后,一旦你获取了定义区域的屏幕截图,它就会将保存的屏幕截图上传到imgur(或者在我的情况下,使用ziggi / zimg-host我的自托管站点),然后使用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-host响应如下所示:
[
{
"name":"image1.jpg",
"type":2,
"size":
{
"width":420,
"height":336,
"filesize":26834
},
"error":
{
"upload":0,
"type":0,
"size":0
},
"url":"ccc762c11f336cfa9fdbcc1b7ea4c1a3.jpg"
}
]
基本上,一旦脚本运行,我需要它来复制响应的“url”部分,并在它的开头抛出http://ziggisite.com
,因此复制到剪贴板的最终数据看起来像{ {1}}。
如果有人可以扔掉一些资源或帮助,那就太棒了!
答案 0 :(得分:0)
从OP的评论中我假设他/她可以使用像jq
这样的JSON解析器。然后这是jq
中的解决方案。假设我们将示例响应放在response.json
中,然后是
<response.json jq -r '.[0].url'
产量
ccc762c11f336cfa9fdbcc1b7ea4c1a3.jpg
,而
<response.json jq -r '"http://ziggisite.com/" + .[0].url'
产量
http://ziggisite.com/ccc762c11f336cfa9fdbcc1b7ea4c1a3.jpg
这里-r
选项用于原始输出,即没有JSON的引号。