Shell Skript per Shortcut starten und User Input einlesen

Python in C/C++ embedden, C-Module, ctypes, Cython, SWIG, SIP etc sind hier richtig.
Antworten
HendrikS.
User
Beiträge: 2
Registriert: Dienstag 13. Februar 2018, 19:00

Dienstag 13. Februar 2018, 19:17

Hallo, ich möchte ein Shell Script (Bash/Zsh) per Shortcut starten,
Dieses funktioniert auch solange ich es im Terminal starte:

per:

Code: Alles auswählen

./test.sh bzw. zsh test.sh oder bash test.sh
Sobald ich es mittels Shortcut in Qtile aufrufe, stürzt es ab, oder es bricht ab, bzw gibt nichts aus.

Der Shortcut:

Code: Alles auswählen

Key([Super], "m", lazy.spawn("bash /home/"+USER+"/.user/test.sh")),
und der betreffende Code:

Code: Alles auswählen

echo "Save (y/n)?"
read -r  input < /dev/$_TTY ## bash
#vared -p "Save (y/n)?" input < /dev/$_TTY  ## zsh
echo "$input"
(das echo "Save (y/n)?" wird noch ausgegeben, aber das read bzw. vared nicht mehr)

Das Programm läuft aber z.B mittels:

Code: Alles auswählen

subprocess.run(["zsh", "/home/"+USER+"/.user/test.sh"])
Woran könnte es liegen, oder gibt es noch eine andere Alternative wie ich es zum laufen kriegen könnte?

MFG H.S.
Sirius3
User
Beiträge: 8102
Registriert: Sonntag 21. Oktober 2012, 17:20

Dienstag 13. Februar 2018, 19:41

@HendrikS.: wenn Du kein Terminal hast, wird höchst wahrscheinlich $_TTY nicht auf was sinnvolles gesetzt sein. Woher kommt das überhaupt? Ersatzlos streichen ist der erste Schritt zur Lösung.
HendrikS.
User
Beiträge: 2
Registriert: Dienstag 13. Februar 2018, 19:00

Dienstag 13. Februar 2018, 20:10

Ah, sorry, hier das komplette script:

Code: Alles auswählen

#!/usr/bin/zsh
set -xv
kate_PID=$(pidof kate)
kate_TTY=$(ps --no-header --ppid $kate_PID | awk "{print \$2}")
echo $kate_TTY > /dev/$kate_TTY

read  -p "Save (y/n)?"  input < /dev/$kate_TTY
#vared -p "Save (y/n)?" input < /dev/$kate_TTY
echo "$input" > /dev/$kate_TTY

set +xv
Antworten