ubuntuusers.de

Syntax Shell Variable in YAD --text "HTML <span>"

Status: Gelöst | Ubuntu-Version: Lubuntu 22.04 (Jammy Jellyfish)
Antworten |

Marantkurz

Anmeldungsdatum:
7. September 2023

Beiträge: 918

Wie kann $var gezeigt werden? Mir gehen die Ideen aus.

var=Test
yad --center \
--text='<span foreground="#ff9700" font="24">$var</span>' \
--text-align=center \
--no-buttons --borders=20 --undecorated --timeout=3

juribel

Anmeldungsdatum:
20. April 2014

Beiträge: 1253

Gerade mal ausprobiert: Funktioniert! Allerdings unter Debian bookworm mit Xfce.

Marantkurz

(Themenstarter)

Anmeldungsdatum:
7. September 2023

Beiträge: 918

Bin verwirrt. Steht bei Dir "Test" oder "$var"?

juribel

Anmeldungsdatum:
20. April 2014

Beiträge: 1253

Oh sorry, bei mir steht "$var" ☹

shiro Team-Icon

Supporter

Anmeldungsdatum:
20. Juli 2020

Beiträge: 1274

Wie kann $var gezeigt werden? Mir gehen die Ideen aus.

Probier mal

$ yad --center --text="<span foreground='#ff9700' font='24'>$var</span>" --text-align=center --no-buttons --borders=20 --undecorated --timeout=3

wxpte

Anmeldungsdatum:
20. Januar 2007

Beiträge: 1388

$var=Test
$echo '<span foreground="#ff9700" font="24">$var</span>'
<span foreground="#ff9700" font="24">$var</span>
$echo '<span foreground="#ff9700" font="24">'$var'</span>'
<span foreground="#ff9700" font="24">Test</span>
$

Edit: Fünf Minuten können schon zu viel sein. 😀

juribel

Anmeldungsdatum:
20. April 2014

Beiträge: 1253

Oder so:

...
--text="<span foreground=\"#ff9700\" font=\"24\">$var</span>" \
...

Ich nehme an, dass $var wegen der einfachen Hochkommata nicht ausgewertet wurde.

Marantkurz

(Themenstarter)

Anmeldungsdatum:
7. September 2023

Beiträge: 918

👍 Lustig, ja, muss YAD gewesen sein, der Hochkommas wohl nicht mag.

Der Gedanke war ein "notify-send" Ersatz mit großer farbiger Schrift frei plazierbar zu schaffen.

Danke @shiro, Danke Euch!

wxpte

Anmeldungsdatum:
20. Januar 2007

Beiträge: 1388

Marantkurz schrieb:

👍 Lustig, ja, muss YAD gewesen sein, der Hochkommas wohl nicht mag.

Nein, das ist die ganz normale bash und hat mit YAD nichts zu tun. Oder vielmehr: YAD macht nur das, was die Shell durchreicht.

Marantkurz

(Themenstarter)

Anmeldungsdatum:
7. September 2023

Beiträge: 918

Nein, das ist die ganz normale bash

Sehe ich anders, die bash akzeptiert Beides.

wxpte

Anmeldungsdatum:
20. Januar 2007

Beiträge: 1388

Siehe meinen Codeblock oben: ich habe YAD gar nicht benutzt.

Marantkurz schrieb:

Sehe ich anders, die bash akzeptiert Beides.

Na, dann zeig doch mal, dass deine Ansicht richtig ist. 😎

Marantkurz

(Themenstarter)

Anmeldungsdatum:
7. September 2023

Beiträge: 918

OK, wieso will Das dann eigentlich nicht?

echo '<span foreground="#ff9700" font="24">"$var"</span>'

Das macht es ja:

echo '<span foreground="#ff9700" font="24">'$var'</span>'

wxpte

Anmeldungsdatum:
20. Januar 2007

Beiträge: 1388

Marantkurz schrieb:

OK, wieso will Das dann eigentlich nicht?

echo '<span foreground="#ff9700" font="24">"$var"</span>'

Wegen des Paares der Hochkommata:

echo '<span foreground="#ff9700" font="24">"$var"</span>'

Dadurch werden die Double-Quotes nicht mehr interpretiert. Das siehst du ja dann auch am Ergebnis:

$echo '<span foreground="#ff9700" font="24">"$var"</span>'
<span foreground="#ff9700" font="24">"$var"</span>
$

Wenn du dagegen zwei weitere Hochkommata einfügst:

echo '<span foreground="#ff9700" font="24">'$var'</span>'

dann befindet sich die Variable außerhalb des Bereichs, der von den Hochkommata erfasst wird. Ebenso funktioniert es, wenn du statt der Hochkommata die Double-Quotes benutzt, und dann innerhalb des Bereichs wieder statt der Double-Quotes Hochkommata benutzt (siehe Beispiel von shiro).

Oder, anders ausgedrückt: wenn du einfache, nicht interpretierbare Zeichen, wie #ff9700 oder 24 quotest, dann ist bash es egal, ob Double-Quotes oder Hochkommata. Bei Variablen dagegen nicht.

Korrektur: Quotes innerhalb eines Quoting-Bereichs werden grundsätzlich nicht mehr interpretiert.

$echo "'$var'"
'Test'
$

Marc_BlackJack_Rintsch Team-Icon

Ehemalige
Avatar von Marc_BlackJack_Rintsch

Anmeldungsdatum:
16. Juni 2006

Beiträge: 4694

Wohnort: Berlin

'<span foreground="#ff9700" font="24">'$var'</span>' ist eine Variante die nur scheinbar funktioniert, beziehungsweise nicht in allen Fällen. Die Funktioniert nicht mehr wenn $var beispielsweise Leerzeichen enthält, weil dass dann nicht mehr ein Argument ist, sondern zwei oder mehr, je nach Anzahl der Leerzeichen an denen das dann aufgeteilt wird:

bj@s8n:~$ var='Test Text'
bj@s8n:~$ ./test.sh '<span foreground="#ff9700" font="24">'$var'</span>'
><span foreground="#ff9700" font="24">Test<
>Text</span><

Die Variante mit escapeten " kommt damit klar:

bj@s8n:~$ ./test.sh "<span foreground=\"#ff9700\" font=\"24\">$var</span>"
><span foreground="#ff9700" font="24">Test Text</span><

Mit test.sh:

1
2
3
4
#!/bin/sh
for argument in "$@"; do
   echo ">$argument<"
done

wxpte

Anmeldungsdatum:
20. Januar 2007

Beiträge: 1388

@ Marc_BlackJack_Rintsch: Hast recht. Das Gemeine daran: bei echo (als isoliertem Befehl) funktioniert es auch ohne Quoting. Man muss also schon ein Mini-Skript erstellen, um das zu zeigen (so wie du).

Das Quoting allein ist schon eine Wissenschaft für sich. 😀 Wäre interessant, wie yad darauf reagiert.

Antworten |