ubuntuusers.de

Klammer als Echo nicht anzeigen

Status: Gelöst | Ubuntu-Version: Kein Ubuntu
Antworten |

UBR

Anmeldungsdatum:
12. November 2017

Beiträge: 13

Hey Leute,

ich arbeite an einen neuen Skript und möchte gerne diese Klammer bei der Ausgabe weghaben. Diese Klammer dient hauptsächlich für das Abspeichern der Variable. Aber beim Ausgeben soll sie halt verschwinden. Hier mein Problemfall:

Code im Skript:

1
2
read -e -p $'\e[32mGebe deinen Botnamen ein: \033[0m' -i 'ts3soundboard' BOTNAME
echo -e "\033[33mDer angegebene Botname heißt:\033[0m ($BOTNAME)"

Ausgabe beim Ausführen: https://prnt.sc/hbe2hb

Und genau diese Klammer will ich bei der Ausgabe loswerden.

Hat jemand eine Idee, wie man die loswerden kann.

Ich würde mich über eine positive Rückmeldung freuen.

Mit freundlichen Grüßen Braveen

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Wohnort: Wolfen (S-A)

Na, wenn Du die Klammer weg haben willst, dann lass sie doch einfach weg !

track@track:~$ BOTNAME=ts3soundboard
track@track:~$ echo -e "\033[33mDer angegebene Botname heißt:\033[0m ($BOTNAME)"
Der angegebene Botname heißt: (ts3soundboard)
track@track:~$ echo -e "\033[33mDer angegebene Botname heißt:\033[0m $BOTNAME"
Der angegebene Botname heißt: ts3soundboard 

Nicht wahr ?

LG,

track

UBR

(Themenstarter)

Anmeldungsdatum:
12. November 2017

Beiträge: 13

Oops funktioniert tatsächlich! Lol! Fehler auf meine Kappe

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17604

Wohnort: Berlin

Es gibt bei Variablen oft geschweifte Klammern zu bewundern:

1
echo ${foo}

Manche Programmierer haben es wohl gerne einheitlich, und weil man die geschweiften Klammern manchmal braucht, setzen sie sie immer. Ich kenne nur eine Verwendung, wo man sie braucht; zur Abgrenzung von Zeichenketten:

1
2
3
4
5
6
foo=bar
echo $foogeld
#
# Error: Silly, undefined Variable: foogeld
echo ${foo}geld
# bargeld

Die Shell sieht die Klammer, denkt "Ah! Eine Variable 'foo' und interpretiert sie und klebt dann 'geld' an.

Im ersten Fall klebt sie erst 'geld' an und versucht das zu interpretieren. Mit ein paar Variablen a,b,c; i,j,n,m; x,y,z würde man sich den Namensraum mächtig einschränken, sollte die Shell selbständig nach validen Bezeichnern in längeren Zeichenketten suchen.

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13174

user_unknown schrieb:

Ich kenne nur eine Verwendung, wo man sie braucht; zur Abgrenzung von Zeichenketten:

Du kennst garantiert noch mehr solche Fälle!

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
$ foo=bar
$ # Ersetzung
$ echo $foo##*a
bar##*a
$ echo ${foo##*a}
r
$ # Arrayindizierung
$ foo=(a b c)
$ echo $foo[1]
a[1]
$ echo ${foo[1]}
b

usw.

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17604

Wohnort: Berlin

Oh, ja, stimmt. Kenne ich eigentlich.

Antworten |