staging.inyokaproject.org

Bash: Eigenwillige Zeichenfolgen

Status: Gelöst | Ubuntu-Version: Ubuntu 22.04 (Jammy Jellyfish)
Antworten |

kB Team-Icon

Supporter, Wikiteam
Avatar von kB

Anmeldungsdatum:
4. Oktober 2007

Beiträge: 9837

Kann mir bitte jemand diese beiden Effekte erklären?

~$ echo [312]
1 2 3
~$ echo [412]
1 2 4
~$ echo [512]
1 2 5
~$ echo [612]
1 2
~$

Fragen:

  1. Wieso wird ein harmloser String wie [312] offenbar als Syntax aufgefasst und umgeformt? Und wieso so? Und wenn schon, warum nicht 3 1 2 als Ergebnis?

  2. Und wieso wird [612] anders verarbeitet als [312]?

Mir ist schon klar, dass diese Effekte wirksam werden, weil ich auf das Quoting verzichtet habe. Mir geht es aber um das Verständnis, welche speziellen Bearbeitungen die Bash hier vornimmt.

kB Team-Icon

Supporter, Wikiteam
(Themenstarter)
Avatar von kB

Anmeldungsdatum:
4. Oktober 2007

Beiträge: 9837

Die dash verhält sich übrigens bei diesem Rätsel genauso wie die bash, und ebenso verhält sich auch die ash von Busybox.

ChickenLipsRfun2eat Team-Icon

Anmeldungsdatum:
6. Dezember 2009

Beiträge: 12067

Hallo!

Ist das wirklich bash? Bei mir passiert da folgendes:

me@delly[~]› echo [312]
[312]
me@delly[~]› echo [412]
[412]
me@delly[~]› echo [612]
[612]
me@delly[~]› 

frostschutz

Avatar von frostschutz

Anmeldungsdatum:
18. November 2010

Beiträge: 7795

Hast du denn Dateien, die 1, 2, 3 ... heissen?

Siehe man bash, Pattern Matching, wie * ? [...]

Beim Globbing werden die Ergebnisse immer sortiert. Bei {3,1,2} bleibt die Reihenfolge erhalten.

ChickenLipsRfun2eat Team-Icon

Anmeldungsdatum:
6. Dezember 2009

Beiträge: 12067

frostschutz schrieb:

Hast du denn Dateien, die 1, 2, 3 ... heissen?

👍

me@delly[/tmp]› touch 1 2 3
me@delly[/tmp]› echo [321]
1 2 3
me@delly[/tmp]› 

kB Team-Icon

Supporter, Wikiteam
(Themenstarter)
Avatar von kB

Anmeldungsdatum:
4. Oktober 2007

Beiträge: 9837

frostschutz schrieb:

Hast du denn Dateien, die 1, 2, 3 ... heissen?

Gerade nachgeschaut: In der Tat habe ich Dateien mit den Namen 1, 2, 3, 4 und 5, aber nicht 6! Heute morgen angelegt, war aber nicht so beabsichtigt. Das erklärt es.

Siehe man bash, Pattern Matching, wie * ? [...]

Danke.

gerold123

Avatar von gerold123

Anmeldungsdatum:
18. April 2006

Beiträge: 1355

frostschutz schrieb:

Hast du denn Dateien, die 1, 2, 3 ... heissen?

Danke!

tuxracer@kubuntu:~$ echo [612]
[612]
tuxracer@kubuntu:~$ touch 1 2 6
tuxracer@kubuntu:~$ echo [612]
1 2 6
tuxracer@kubuntu:~$ echo "612"
612
tuxracer@kubuntu:~$ rm 6 1 2
tuxracer@kubuntu:~$ echo "612"
612
tuxracer@kubuntu:~$ echo $SHELL
/bin/bash
tuxracer@kubuntu:~$ 
Antworten |