Ich habe gerade eine Variable zugewiesen, aber echo $ variable zeigt etwas anderes an
Hier sind eine Reihe von Fällen, in denenecho $var
kann einen anderen Wert als den gerade zugewiesenen anzeigen. Dies geschieht unabhängig davon, ob der zugewiesene Wert "in doppelten Anführungszeichen", "in einfachen Anführungszeichen" oder nicht in Anführungszeichen angegeben war.
Wie bringe ich die Shell dazu, meine Variable richtig einzustellen?
Sternchen
Die erwartete Ausgabe ist/* Foobar is free software */
, aber stattdessen erhalte ich eine Liste mit Dateinamen:
$ var="/* Foobar is free software */"
$ echo $var
/bin /boot /dev /etc /home /initrd.img /lib /lib64 /media /mnt /opt /proc ...
Eckige Klammer
Der erwartete Wert ist[a-z]
, aber manchmal bekomme ich stattdessen einen einzelnen Buchstaben!
$ var=[a-z]
$ echo $var
c
Line Feeds (Newlines)
Der erwartete Wert ist eine Liste von separaten Zeilen, aber stattdessen stehen alle Werte in einer Zeile!
$ cat file
foo
bar
baz
$ var=$(cat file)
$ echo $var
foo bar baz
Mehrere Felder
Ich habe eine sorgfältig ausgerichtete Tabellenüberschrift erwartet, aber stattdessen verschwinden mehrere Leerzeichen oder werden zu einem zusammengefasst!
$ var=" title | count"
$ echo $var
title | count
Tabs
Ich habe zwei durch Tabulatoren getrennte Werte erwartet, aber stattdessen erhalte ich zwei durch Leerzeichen getrennte Werte!
$ var=key\tvalue'
$ echo $var
key value