Quelle est la signification de $$ 1 en bash?

27

Je joue en fait avec des arguments et c'est arrivé. Je pensais juste voir ce qui se passerait si je tape $$1et je l'ai fait et j'ai obtenu quelque chose ci-dessous.

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

Qu'est-ce que cela signifie en 19301, est-ce que ça dit quelque chose?

Bottom-Line: qu'est-ce que cela signifie pour $$1bash.

rɑːdʒɑ
la source
1
Aie!! cette chose beaucoup plus facile. J'ai encore beaucoup de choses à apprendre. Toutes les réponses sont super. +1 à tous.
rɑːdʒɑ

Réponses:

27

$$ est le PID (identifiant de processus) du processus en cours.

$$1est le PID ci-dessus suivi de la chaîne littérale 1.

Donc, cela vous dit que bashc'est le processus avec le PID 1930.

Mais ... astuce gratuite:

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

(assez alambiqué, n'est-ce pas?)

Plus d'informations dans TLDP .

Rmano
la source
1
Voir également - tldp.org/LDP/abs/html/internalvariables.html
Panther
1
Pendant un moment, j'ai lu le TLDP comme "Trop long n'a pas fait pipi".
Luis Alvarado
13

Voir la sortie de echo $$1.

Et vous obtenez l'erreur command not foundparce que vous essayez d'exécuter une chaîne composée de chiffres qui n'est évidemment pas une commande.

Radu Rădeanu
la source
10

Vous avez concaténé $$et 1ensemble pour obtenir le PID du shell actuel et 1, c'est-à-dire $$le PID du shell en cours d'exécution et 1n'est qu'un caractère, vous pouvez le faire $$a, $$@pour obtenir le PID concaténé avec le caractère suivant.

jobin
la source
6

$$ il indiquera 1930quel est le pid du shell actuel.

Lorsque vous tapez, $$1cela signifie pid suivi d'un pour que la sortie soit 19301.

Essayez $$2la sortie sera19302

nux
la source