Shell脚本中的代码在其他操作之前运行

时间:2016-10-15 15:45:22

标签: bash xclip

  

https://bl.ocks.org/mbostock/4063550中更好地制定了同样的问题。

我正在编写一个脚本,在按键上打开,打开一个新终端(gnome-terminal),运行scrot(截图工具),将带有随机名称的图片保存到目录,将其上传到pomf.cat并复制剪贴板的链接。

这很好用。我现在要做的是,上传完成后,关闭终端。

我的脚本是这样的:

快捷方式(PrtScr) - > gnome-terminal -e“python path / to / script.py” - >开始Scrot - >保存文件(并记住文件路径) - > bash script2.sh path / to / picture - >上传到pomf.cat - >获取链接 - >通过“xclip -selection clipboard”

放入剪贴板

由于我想在将String放入剪贴板后关闭终端,我添加了这个:

eval $(printf $link | xclip -selection clipboard && sleep 1 && pkill terminal)

问题是,没有任何东西被复制到剪贴板中,终端关闭。

但是,如果没有“&& sleep 1&& pkill terminal”,链接会被复制,但终端会保持打开状态。

提前致谢。

// EDIT

第一个脚本(用于运行scrot)

#!/usr/bin/env python
import os
import uuid
import time

def rstring(string_length=10):
    random = str(uuid.uuid4())
    random = random.upper()
    random = random.replace("-","")
    return random[0:string_length]

randomString = rstring(16)

os.system("scrot -s -q 100 /home/timon/screenshots/" + randomString + ".jpg")

while True:
    processRead = os.popen("ps aux | grep \"scrot -s\" | cat").read()
    if "scrot -s" not in processRead:
        time.sleep(1)
    else:
        break
        system.sleep(3)

os.system("/home/timon/.screenshot_stuff/./screen.sh /home/timon/screenshots/" + randomString + ".jpg")

第二个脚本(用于上传屏幕截图)

#!/usr/bin/env bash

dest_url='https://cuntflaps.me/upload.php'
return_url='https://a.cuntflaps.me'

if [[ -n "${1}" ]]; then
    file="${1}"
    if [ -f "${file}" ]; then
        printf "Uploading ${file}..."
        my_output=$(curl --silent -sf -F files[]="@${file}" "${dest_url}")
        n=0  # Multipe tries
        while [[ $n -le 3 ]]; do
            printf "try #${n}...\n"
            if [[ true ]]; then
                return_file=$(echo "$my_output" | grep "url" |  sed 's/\,//g' | sed 's/\\//g' | sed 's/\"//g' | sed 's/\url://g' | tr -d ' ')
                printf 'done.\n'
                break
            else
                printf 'failed.\n'
                ((n = n +1))
            fi
        done
            printf "$return_file" | xclip -selection clipboard && pkill terminal
    else
        printf 'Error! File does not exist!\n'
        exit 1
    fi
else
    printf 'Error! You must supply a filename to upload!\n'
    exit 1
fi

1 个答案:

答案 0 :(得分:1)

所以最后我提出了自己的解决方案。

问题似乎是xclip本身。 现在我使用" xsel --clipboard --input",即使直接退出也似乎有效。