variablenzuweisung

dosenfleisch

dosenfleisch

Foren As
hallo,

mir fehlt offenbar das know-how um folgendes funktionierend zu schreiben:

Code:
#!/bin/bash
name="Streng öffentlich!"
if [ $name = "Streng öffentlich!" ]; then name="Streng Öffentlich!" ; fi
kdialog --title "$name" --passivepopup "" 1

warum funktioniert das nicht und worin besteht die lösung?
 
Eventuell möchtetst du erstmal sagen was nicht funktioniert, bzw was du erwartest.

Mit einfachen Hochkomma macht zumindest das hier was du erwartest:
Code:
$ name='Streng öffentlich!';if [ x"$name" = x'Streng öffentlich!' ]; then name='Streng Öffentlich!'; echo $name; fi
Streng Öffentlich!
Bei Sonderzeichen verwende einfache Hochkomma!
Gruß Wolfgang
 
hallo Wolfgang,

da bin ich aber froh, daß es doch noch sichtbar wurde, was ich will.

ich habe deinen code erfolgreich bei mir ausführen können. aus dem kauderwelsch wurde tatsächlich "Streng Öffentlich".

die hochkommata hatte ich auch schon probiert, aber keinen erfolg damit.
nachdem ich meinen mit deinem code verglich, wurde deutlich, daß du in den test-klammern die variable $name in anführungsstrichen hast und ich nicht.
darin wird der eigentliche fehler bei mir liegen. da helfen dann auch die hochkommata nicht heraus.

danke Wolfgang
 
Mehr noch, wie sichtbar habe ich ein x davor gesetzt.
Wenn deine variable nämlich mal leer ist, wird ein
Code:
if  = String
daraus, was die Shell mit einem Fehler quittiert.
In meinem Fall aber ein
Code:
if x = xString
Das kann die Shell auswerten.

Deshalb empfehle ich das bei Stringvergleichen, wenn nicht sichegestellt ist, dass die Variable einen Wert hat.

Gruß Wolfgang
 
das ist eine gute idee. in meinem falle habe ich zuvor einer leeren variablen bereits einen namen zugewiesen, aber das könnte ich mir aus diese weise in zukunft hin und wieder sparen.
 

Ähnliche Themen

Switche abfragen über Script

Hilfe für ein shell script

[gelöst] - for file in ... nur für bestimmte Endungen?

HandbrakeCLI Shell Skript

Crontab und Scripts - Problem

Zurück
Oben