Что означает $$ 1 в bash?


27

Я на самом деле играю с аргументами, и это случилось. Я просто подумал, хотел бы посмотреть, что произойдет, если я наберу, $$1и я сделал это и получил что-то ниже

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

Что значит 19301, это что-то говорит?

Итог: что значит $$1в bash.


1
Уч !! это очень легко. У меня еще есть чему поучиться. Все ответы супер. +1 ко всем.
rɑːd '20

Ответы:


27

$$ это PID (идентификатор процесса) текущего процесса.

$$1вышеуказанный PID, за которым следует буквальная строка 1.

Так что это говорит вам, что ваш bashпроцесс с PID 1930.

Но ... бесплатный трюк:

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

(довольно запутанный, не так ли?)

Больше информации в TLDP .



1
На мгновение я прочитал TLDP как «Слишком долго не мочился».
Луис Альварадо

13

Смотрите вывод echo $$1.

И вы получаете ошибку, command not foundпотому что вы пытаетесь выполнить строку, состоящую из цифр, которая, очевидно, не является командой.


10

Вы сцеплены $$и 1вместе , чтобы получить PID текущей оболочки и 1, т.е. $$выступает за PID в настоящее время работает оболочку и 1только характер, вы могли бы сделать $$a, $$@чтобы получить PID сцепляется со следующим характером.


6

$$ будет утверждать , 1930что PID текущей оболочки.

Когда вы печатаете, $$1это означает, что pid сопровождается одним, так что вы получите результат 19301.

Попробуй $$2вывод будет19302

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.