Код в Shell Script запускается перед другими операциями

Эта же проблема лучше сформулирована в вопросе, опубликованном в сообществе Unix & Linux StackExchange .

Я программирую скрипт, который открывается при нажатии клавиши, открывает новый терминал (gnome-terminal), запускает scrot (инструмент для скриншотов), сохраняет изображение со случайным именем в каталог, загружает его в pomf.cat и копирует ссылку на в буфер обмена.

Это прекрасно работает. То, что я пытаюсь сделать сейчас, - это когда вы загружаете, закройте терминал.

Мой скрипт работает следующим образом:

Ярлык (PrtScr) -> gnome-terminal -e "Путь python / to / script.py" -> Запустить Scrot -> Сохранить файл (и запомнить путь к файлу) -> bash script2.sh path / to / picture -> Загрузить to pomf.cat -> Получить ссылку -> Поместить в буфер обмена через "xclip -selection clipboard"

Поскольку я хочу закрыть терминал после помещения String в буфер обмена, я добавил следующее:

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

Проблема заключается в том, что ничто не копируется в буфер обмена, и терминал закрывается.

Однако без «&& sleep 1 && pkill terminal» ссылка копируется, но терминал остается открытым.

Заранее спасибо.

//РЕДАКТИРОВАТЬ

Первый скрипт (для запуска скот)

#!/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}...
"
            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.
'
                break
            else
                printf 'failed.
'
                ((n = n +1))
            fi
        done
            printf "$return_file" | xclip -selection clipboard && pkill terminal
    else
        printf 'Error! File does not exist!
'
        exit 1
    fi
else
    printf 'Error! You must supply a filename to upload!
'
    exit 1
fi

bash,xclip,

0

Ответов: 1


1 принят

Поэтому, в конце концов, я придумал свое решение.

Проблема, казалось, была самой xclip. Теперь я использую «xsel -clipboard -input», который, похоже, работает даже после выхода напрямую.

Баш, Xclip,
Похожие вопросы