¿Cuál es el significado de $$ 1 en bash?


27

En realidad estoy jugando con argumentos y sucedió. Solo pensé en ver qué pasaría si escribo $$1y lo hice y obtuve algo a continuación.

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

¿Qué significa eso 19301? ¿Está diciendo algo?

En pocas palabras: lo que significa $$1en bash.


1
¡¡Ay!! Esa cosa tan fácil. Todavía tengo muchas cosas que aprender. Todas las respuestas son super. +1 a todos.
rɑːdʒɑ

Respuestas:


27

$$ es el PID (id. de proceso) del proceso actual.

$$1es el PID anterior seguido de la cadena literal 1.

Entonces te dice que tu bashes el proceso con PID 1930.

Pero ... truco gratis:

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

(bastante complicado, ¿no?)

Más información en TLDP .



1
Por un momento leí el TLDP como "Demasiado tiempo no hizo pipí".
Luis Alvarado

13

Ver la salida de echo $$1.

Y obtiene el error command not foundporque está tratando de ejecutar una cadena compuesta de dígitos que obviamente no es un comando.


10

Se han concatenado $$y 1juntos para obtener el PID del shell actual y 1, es decir, $$representa el PID del shell actualmente en ejecución y 1es solo un carácter, podría hacer $$a, $$@para concatenar el PID con el siguiente carácter.


6

$$ indicará 1930cuál es pid del shell actual.

Cuando escribe $$1eso significa pid seguido de uno, por lo que la salida sería 19301.

Prueba $$2la salida será19302

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.