Назад | Перейти на главную страницу

сценарий оболочки $$ значение

Когда я использую эти команды оболочки:

[root@linux /tmp]# a=$$
[root@linux /tmp]# echo $a
3985

откуда взялось значение 3985? И почему?

man bash

объясняет это.

Expands to the process ID of the shell.  In a () subshell, 
it expands to the  process ID of the current shell, not the subshell.

$$ - идентификатор текущего процесса

пытаться

host@controller:~$ echo $$
12481
host@controller:~$ ps -p 12481
  PID TTY          TIME CMD
12481 pts/2    00:00:01 bash
host@controller:~$

Поскольку мы выполняем echo $$ в bash мы получаем текущий pid

знаю также

эхо $? - это код возврата последней выполненной команды.

$ # - количество аргументов

$ * - это список аргументов, переданных текущему процессу

$ [1 или 2 или ... n] значение каждого соответствующего аргумента

Вот почему некоторые люди используют его для создания имени файла, которое используется только временно, а затем уничтожается, как в этом фрагменте скрипта.

SCRATCHFILE=/tmp/emphemeral.$$ ;
# Now have the script write to and read from the temp file
rm $SCRATCHFILE ;

Как упоминалось выше, $$ в имени файла будет PID основного скрипта.

Попробуйте "echo $$" и получите ответ.