Was bedeutet $$ 1 in bash?

27

Ich spiele eigentlich mit Argumenten und es ist passiert. Ich habe nur nachgedacht, was passieren wird, wenn ich tippe $$1und es tue und unten etwas bekomme.

raja@raja-BONEFISH:~$ $$1
19301: command not found

Was soll das heißen, sagt es etwas?

Fazit: Was bedeutet das $$1in bash?

rɑːdʒɑ
quelle
1
Autsch!! so viel einfache Sache. Ich habe noch viel zu lernen. Alle Antworten sind super. +1 an alle.
Donnerstag,

Antworten:

27

$$ ist die PID (Prozess-ID) des aktuellen Prozesses.

$$1ist die obige PID, gefolgt von der Literalzeichenfolge 1.

Sie sagen also, dass dies bashder Prozess mit PID 1930 ist.

Aber ... Freistoß:

show() { eval echo \$$1; }
show PATH
/home/romano/bin:/usr/local/bin:/bin:/usr/bin

(ziemlich verworren, nicht wahr?)

Weitere Infos in TLDP .

Rmano
quelle
1
Für einen Moment las ich die TLDP als "Too Long Did Don't Pee".
Luis Alvarado
13
  • $$- pid der aktuellen Shell (nicht Subshell) - siehe Was sind die speziellen Dollarzeichen-Shell-Variablen?

  • $$1- pid der aktuellen Shell (nicht Subshell) gefolgt von 1.

  • $$2- pid der aktuellen Shell (nicht Subshell) gefolgt von 2.

  • $$a- pid der aktuellen Shell (nicht Subshell) gefolgt von einem aZeichen.

  • Und so weiter...

Siehe die Ausgabe von echo $$1.

Und Sie erhalten den Fehler, command not foundweil Sie versuchen, einen aus Ziffern bestehenden String auszuführen, der offensichtlich kein Befehl ist.

Radu Rădeanu
quelle
10

Sie haben verkettet $$und 1zusammen, um die PID der aktuellen Shell zu erhalten 1, dh $$steht für die PID der aktuell ausgeführten Shell und 1ist nur ein Zeichen, das Sie tun $$akönnen $$@, um die PID mit dem folgenden Zeichen zu verketten.

Job in
quelle
6

$$ es wird angegeben, 1930welches pid ist der aktuellen Shell ist.

Wenn Sie eingeben $$1, bedeutet dies, dass pid gefolgt von eins, damit Sie die Ausgabe erhalten19301 .

Versuchen Sie, $$2die Ausgabe zu sein19302

nux
quelle