Diese Website existiert nur weil wir Werbung mit AdSense ausliefern.
Bitte den AdBlocker daher auf dieser Website ausschalten! Danke.

Script beim drücken auf Abbrechen in Zenity nicht ausführen

Alles rund um die verschiedenen Konsolen und shells sowie die Programmierung unter Linux

Moderator: Moderatoren

Antworten
bunter fisch
Member
Member
Beiträge: 61
Registriert: 12. Sep 2017, 10:25

Script beim drücken auf Abbrechen in Zenity nicht ausführen

Beitrag von bunter fisch » 2. Mär 2018, 14:20

Mahlzeit,

ich habe für mein Problem aktuell kein Beispielscript. Angenommen ich lasse eine Audiodatei mit ffmpeg umwandeln:

Code: Alles auswählen

ffmpeg -i input -ab 160k output
Ich könnte jetzt mit Zenity und der Dateiauswahl die Inputdatei und den Ausgabeordner wählen. Drücke in dem Auswahldialog auf "OK" setzte Zenity die Auswahl in das Script ein. Gehe ich aber auf "Abbrechen" wird nichts eingesetzt, das Script aber dennoch ausgeführt. Im o.g. Fall macht das nichts, kann aber auch in anderen Konstellationen blöd sein. Wie biege ich das so zurecht, dass er wenn ich "Abbrechen" im Datei-/Ordnerauswahldialog drücke, das Script überhaupt nicht startet?

Hab auch für yad nichts gefunden, das nutze ich aber nicht. Ich bin mit Zenity immer schneller zum Ziel bekommen.

Werbung:
abgdf
Guru
Guru
Beiträge: 3083
Registriert: 13. Apr 2004, 21:15

Re: Script beim drücken auf Abbrechen in Zenity nicht ausführen

Beitrag von abgdf » 2. Mär 2018, 17:28

bunter fisch hat geschrieben:
2. Mär 2018, 14:20
ich habe für mein Problem aktuell kein Beispielscript.
Dann schreib' doch mal eins und poste es. Dann wäre es für uns leichter, Dein Problem nachzuvollziehen.

josef-wien
Ultimate Guru
Ultimate Guru
Beiträge: 5071
Registriert: 23. Sep 2008, 17:09

Re: Script beim drücken auf Abbrechen in Zenity nicht ausführen

Beitrag von josef-wien » 2. Mär 2018, 17:51

https://de.wikipedia.org/wiki/Zenity hat geschrieben:Zenity [ˈzenətɪ] ist ein plattformunabhängiges Programm, das es erlaubt, GTK-Dialoge von der Kommandozeile oder von Shell-Skripten aus zu starten.
Ich sehe nicht, daß ffmpeg in diese Definition fällt, aber wenn es wichtig ist, daß die von wem auch immer an ein Skript (oder jedes andere Programm) übergebenen Daten stimmen, dann ist die Plausibilität dieser Daten bzw. das Vorhandensein von Dateien oder Verzeichnissen zu prüfen, bevor mit der eigentlichen Verarbeitung begonnen wird.

P. S. Ich kenne "Zenity" nicht, aber vielleicht fällt Deine Beobachtung in die Kategorie "It is a feature, not a bug.".

bunter fisch
Member
Member
Beiträge: 61
Registriert: 12. Sep 2017, 10:25

Re: Script beim drücken auf Abbrechen in Zenity nicht ausführen

Beitrag von bunter fisch » 2. Mär 2018, 18:33

Zum Beispiel das hier

Code: Alles auswählen

ffmpeg -i input.mp3 "$(zenity --file-selection --directory='/home/fisch/')"/output.mp3
Wähle ich einen Ordner aus wird die Output-Datei in diesen Ordner geschrieben, gehe ich auf Abbrechen wird die Datei in den Ordner der Input-Datei geschrieben.

abgdf
Guru
Guru
Beiträge: 3083
Registriert: 13. Apr 2004, 21:15

Re: Script beim drücken auf Abbrechen in Zenity nicht ausführen

Beitrag von abgdf » 2. Mär 2018, 19:50

Du führst ffmpeg ja auch unbedingt aus, und nicht nur dann, wenn zenity etwas liefert.
Mach' das so:

Code: Alles auswählen

#!/bin/bash

a=$(zenity --file-selection --directory --filename='/home/fisch')
if test -n "$a"
then
    echo "Doing something with ffmpeg $a"
else
    echo "Doing nothing."
fi

Benutzeravatar
susejunky
Hacker
Hacker
Beiträge: 421
Registriert: 19. Sep 2014, 18:22

Re: Script beim drücken auf Abbrechen in Zenity nicht ausführen

Beitrag von susejunky » 2. Mär 2018, 21:05

Hallo bunter fisch,
bunter fisch hat geschrieben:
2. Mär 2018, 18:33
Zum Beispiel das hier

Code: Alles auswählen

ffmpeg -i input.mp3 "$(zenity --file-selection --directory='/home/fisch/')"/output.mp3
Wähle ich einen Ordner aus wird die Output-Datei in diesen Ordner geschrieben, gehe ich auf Abbrechen wird die Datei in den Ordner der Input-Datei geschrieben.
In Ergänzung zu dem was abgdf bereits gesagt hat, hier noch zwei Beispiele (die Du in der Befehlszeile einer Konsole ausführen kannst), die zeigen welche Rückgabewerte Du auswerten kannst:

Code: Alles auswählen

> A="X";A=`zenity --file-selection --directory="~"`; echo "Returncode: $? Auswahl: >$A<" 
Returncode: 0 Auswahl: >/home/user/ausgewähltes_Verzeichnis<
>
Zunächst wird die Variable A mit "X" vorbelegt. Dann wird "zenity" aufgerufen. Das Verzeichnis "/home/user/ausgewähltes_Verzeichnis" wird ausgewählt und der Dialog mit "OK" beendet. Dadurch wird das ausgewählte Verzeichnis in der Variablen A und der Returncode des Aufrufs von "zenity" in der Variablen $? gespeichert. "echo" gibt dann die beiden Variablen aus.

Code: Alles auswählen

> A="X";A=`zenity --file-selection --directory="~"`; echo "Returncode: $? Auswahl: >$A<" 
Returncode: 1 Auswahl: ><
>
Zunächst wird die Variable A mit "X" vorbelegt. Dann wird "zenity" aufgerufen. Der Dialog wird mit "Abbrechen" beendet. Ob ein Verzeichnis ausgewählt wurde oder nicht ist dabei nicht von Bedeutung. Dadurch wird "" in der Variablen A und der Returncode des Aufrufs von "zenity" in der Variablen $? gespeichert. "echo" gibt dann die beiden Variablen aus.

Viele Grüße

susejunky

abgdf
Guru
Guru
Beiträge: 3083
Registriert: 13. Apr 2004, 21:15

Re: Script beim drücken auf Abbrechen in Zenity nicht ausführen

Beitrag von abgdf » 3. Mär 2018, 01:35

Wenn Du's unbedingt in einer Zeile haben willst, kann man Dein Beispiel
bunter fisch hat geschrieben:
2. Mär 2018, 18:33

Code: Alles auswählen

ffmpeg -i input.mp3 "$(zenity --file-selection --directory='/home/fisch/')"/output.mp3
auch so machen:

Code: Alles auswählen

a=$(zenity --file-selection --directory --filename='/home/fisch');if test -n "$a";then ffmpeg -i input.mp3 "$a/output.mp3";fi

bunter fisch
Member
Member
Beiträge: 61
Registriert: 12. Sep 2017, 10:25

Re: Script beim drücken auf Abbrechen in Zenity nicht ausführen

Beitrag von bunter fisch » 3. Mär 2018, 22:06

@ abgdf

So gehts. Simple, wenn man einmal die Idee sieht. Wieso man da selber nicht drauf kommt :irre:

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste