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

27

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

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

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

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

rɑːdʒɑ
источник
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 .

Rmano
источник
1
Смотрите также - tldp.org/LDP/abs/html/internalvariables.html
Пантера
1
На мгновение я прочитал TLDP как «Слишком долго не мочился».
Луис Альварадо
13

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

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

Раду Рэдяну
источник
10

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

Jobin
источник
6

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

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

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

Nux
источник