ubuntuusers.de

Variable, Datei oder Zeichenkette?

Status: Ungelöst | Ubuntu-Version: Ubuntu 22.10 (Kinetic Kudu)
Antworten |

Umaash

Anmeldungsdatum:
7. Juni 2016

Beiträge: 123

Bei folgendem Befehl ist klar, dass es um den Inhalt einer Variablen geht, weil vor dem Namen $ steht:

1
echo $abc

Woher weiss hingegen das Terminal bei folgendem Befehl, ob es sich bei abc um eine Datei handelt oder um eine Zeichenkette? :

1
echo abc

Ich hätte erwartet, dass es hier auch irgend ein Steuerzeichen geben würde, damit das Terminal weiss, ob ich eine Datei oder eine Zeichenkette meine. Z.B.

1
echo °abc

... würde bedeuten, dass die Datei abc gemeint ist. Wenn kein ° davor steht, würde das bedeuten, dass ich mit echo nur die Zeichenkette abc anzeigen lassen will, unabhängig davon, ob es so eine Datei gibt oder nicht. Allerdings gibt es das Steuerzeichen ° nicht. Dieses habe ich ja nur erfunden um zu zeigen womit ich Schwierigkeiten beim Verständnis habe.

Es gibt ja dann auch noch den Befehl wie:

1
echo a*

... der mir dann alle Dateien auflistet, die mit a beginnen.

Also hier die Frage: Es ist mir klar, woher das Terminal weiss, wenn ich mich im echo-Befehl auf eine Variable beziehe. Das sieht man am $ vor dem Namen. Aber woher weiss das Terminal beim Befehl "echo abc" ob sich abc auf eine Datei bezieht oder ob abc nur eine Zeichenkette ist, die angezeigt werden soll?

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13204

Umaash schrieb:

Bei folgendem Befehl ist klar, dass es um den Inhalt einer Variablen geht, weil vor dem Namen $ steht:

1
echo $abc

Woher weiss hingegen das Terminal bei folgendem Befehl, ob es sich bei abc um eine Datei handelt oder um eine Zeichenkette? :

1
echo abc

Das ist immer eine Zeichenkette. Ob es eine Datei mit entsprechendem Namen gibt, ist an dieser Stelle irrelevant.

Ich hätte erwartet, dass es hier auch irgend ein Steuerzeichen geben würde, damit das Terminal weiss, ob ich eine Datei oder eine Zeichenkette meine.

Die Verwendung bestimmt das.

Also hier die Frage: Es ist mir klar, woher das Terminal weiss, wenn ich mich im echo-Befehl auf eine Variable beziehe. Das sieht man am $ vor dem Namen. Aber woher weiss das Terminal beim Befehl "echo abc" ob sich abc auf eine Datei bezieht oder ob abc nur eine Zeichenkette ist, die angezeigt werden soll?

  1. Es ist nicht das Terminal sondern die Shell

  2. Die Verwendung bestimmt, ob eine Zeichenkette als Dateiname verwendet wird.

Beispiele

1
2
3
4
5
if [ -f abc ]; then echo "Habe tatsächlich eine Datei 'abc' gefunden!"; else echo 'Leider nix'; fi

while read line; do
  echo "Aus Datei 'abc' gelesen: $line"
done <abc
Antworten |