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

Variablen - doppelte Anführungszeichen Bash

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

Moderator: Moderatoren

Antworten
catweasel
Hacker
Hacker
Beiträge: 440
Registriert: 9. Nov 2006, 19:46

Variablen - doppelte Anführungszeichen Bash

Beitrag von catweasel »

Hi,

gibt es Regeln, zum Setzten bzw. Weglassen von doppelten Anführungszeichen bei Bash-Variablen?
Benutzeravatar
robi
Moderator
Moderator
Beiträge: 3204
Registriert: 25. Aug 2004, 02:13

Re: Variablen - doppelte Anführungszeichen Bash

Beitrag von robi »

catweasel hat geschrieben: gibt es Regeln, zum Setzten bzw. Weglassen von doppelten Anführungszeichen bei Bash-Variablen?
Ob man da unbedingt immer Regeln dazu braucht ?
Die beste Regel ist meiner Meinung nach: so oft wie möglich setzen, wenn man es mal aus welchem Grund auch immer, mal nicht nicht setzen will, oder kann, oder es sonst zu komplizierte Befehlszeilen werden würden, dann sollte man absolut sicher sein, das in der Variable nur Daten ohne Leer und Zeilenvorschub enthalten sein können.

robi
catweasel
Hacker
Hacker
Beiträge: 440
Registriert: 9. Nov 2006, 19:46

Re: Variablen - doppelte Anführungszeichen Bash

Beitrag von catweasel »

In diesem Zusammenhang finde ich Regeln hilfreich.
Benutzeravatar
regexer
Advanced Hacker
Advanced Hacker
Beiträge: 1005
Registriert: 3. Dez 2004, 09:29
Wohnort: $_

Re: Variablen - doppelte Anführungszeichen Bash

Beitrag von regexer »

Grundsätzlich sollte man sie immer setzen, wenn der Variablen-Inhalt leer sein oder ein Trennzeichen wie Space enthalten könnte und die Variable als Argument verwendet wird.

Andererseits ist es überflüssig $$ oder $? in doppelte Hochkommas zu setzen, da diese Werte nie leer sein können.

Es sind natürlich auch Konstrukte denkbar, bei denen Hochkommas falsch sein könnten. Zum Beispiel bei

Code: Alles auswählen

zeile="wort1 wort2 wort3"
for wort in $zeile
do
  echo $wort
done
Antworten