$$ gives process id of the script process when used in a script, like this:
Example 1
#!/bin/bash
# processid.sh
# print process ids
ps -o cmd,pid,ppid
echo "The value of \$\$ is $$"
$ ./processid.sh 
CMD                           PID  PPID
bash                        15073  4657
/bin/bash ./processid.sh    15326 15073
ps -o cmd,pid,ppid          15327 15326
The value of $$ is 15326
Observe the pid given by $$ and ps is 15326  
My shell prompt is pid 15073
But in a subshell, $$ gives pid of parent shell (which is 15073)
Example 2
$ ( ps -o cmd,pid,ppid ; echo $$ )
CMD                           PID  PPID
bash                        15073  4657
bash                        15340 15073
ps -o cmd,pid,ppid          15341 15340
15073
Here subshell is pid 15340
Question: Why so? Isn't the script also running in a subshell? What's the difference between the subshell in example 2 and the shell in which the script runs in example 1?
$$ is the pid (process id) of the shell interpreter running your script. It's different for each process running on a system at the moment, but over time the pid wraps around, and after you exit there will be another process with same pid eventually.As long as you're running, the pid is unique to you.
$1, $2, $3 etc. represent the first, second, third, etc. arguments to the script. $# represents the number of arguments. $* represents the string of arguments.
Definition: A subshell is a child process launched by a shell (or shell script). A subshell is a separate instance of the command processor -- the shell that gives you the prompt at the console or in an xterm window.
The $@ holds list of all arguments passed to the script. The $* holds list of all arguments passed to the script.
From the bash manpage:
   $      Expands  to  the  process ID of the shell.  In a () subshell, it
          expands to the process ID of the current  shell,  not  the  sub-
          shell.
                        The replacement takes place in the parent shell; the subshell hasn't been started by the time the substitution takes place.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With