ubuntuusers.de

Fehler in meinem yad-Script

Status: Gelöst | Ubuntu-Version: Ubuntu 24.04 (Noble Numbat)
Antworten |

dianthus

Anmeldungsdatum:
17. Dezember 2006

Beiträge: 228

Wohnort: Lennestadt

Hallo, könnt ihr mir bitte Mal helfen? Folgendes Script läuft durch, erstellt die Datei, die aber leer ist.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
#!/bin/bash
notiz=$(yad --form --field="Text::txt"\
--title "Deine Notiz" --width=300 --height=200\
 --button="Speichern":1 --button="Abbrechen":0)

if [ $? -eq 1 ]; then  # Überprüfen, ob "Speichern" gedrückt wurde
  dateiname="meine_notiz.txt"
  verzeichnis="/home/av/Nextcloud/TelefonNotes"
  echo $notiz >> $verzeichnis/$dateiname
  echo "Notiz gespeichert in $verzeichnis/$dateiname"
  
fi

Ich weiß leider keinen Rat mehr.

TK87

Anmeldungsdatum:
8. Juli 2019

Beiträge: 241

Wohnort: Aachen

Moin,

siehe yad:

In der Praxis wird man den Buttons auch Exit-Codes zuordnen wollen. Aber Achtung: Nur bei geraden Exit-Codes gibt YAD dann auch die Auswertung der Felder über die Standardausgabe zurück. Bei Buttons mit ungeradem Exit-Code bleibt die Standardausgabe leer.

1
yad --form --button="Button 1:10" --button="Button 2:20"  --button="Button 3:30" --field "Texteingabefeld"; echo $?

Gruß Thomas

shiro

Anmeldungsdatum:
20. Juli 2020

Beiträge: 1216

Hallo dianthus,

TK87 hat ja schon darauf hingewiesen, dass bei "yad" die Buttons den Statuswert ($?) liefern (also nicht wie bei "zenity" das Button-Label). Ein "Success" Button liefert einen geraden Status, ein "Fehler" einen ungeraden Status. Bei einem "Fehler" werden keine "Form"-Werte ausgegeben. Mehrere Eingabefelder werden defaultmäßig durch das "|" Zeichen getrennt. Eine gute Hilfe ist meiner Meinung nach diese Webseite.

Dein "yad" Befehl lässt mich aber vermuten, dass du eigentlich eine andere Form mit einem "Title" und einem mehrzeiligen Eingabefeld (:txt) erwartest. Könnte es sein, dass den Befehl wie folgt lauten sollte?

verzeichnis="/home/av/Nextcloud/TelefonNotes"
dateiname="meine_notiz.txt"
yad --title="Deine Notiz" --form\
 --field="Text:txt"\
 "Dies ist der\nmehrzeilige Default-Text" | 
while IFS="|" read -r line; do
 echo -e "$line" >> $verzeichnis/$dateiname
 echo "Notiz gespeichert in $verzeichnis/$dateiname"
done

Solltest du keinen mehrzeilige Text erfassen wollen, verwende "--field=Text".

dianthus

(Themenstarter)

Anmeldungsdatum:
17. Dezember 2006

Beiträge: 228

Wohnort: Lennestadt

Vielen Dank an Euch Beide, hat jetzt geklappt!

juribel

Anmeldungsdatum:
20. April 2014

Beiträge: 1232

@shiro: Danke für den Link! SEHR hilfreich.

Antworten |