#!/bin/bash
function abc() # wait for some event to happen, can be terminated by other process
{
sleep 3333
}
echo "PID: $$"
abc &
echo "PID: $$"
関数を検索する必要がありますが、pid
echoは同じ文字列を印刷します。
abc()
このスクリプトを終了するつもりがない場合は、スクリプトをインポートしてpid
関数を終了できますか?
答え1
私の考えには2つのオプションがあります。
$BASHPID
または$!
echo "version: $BASH_VERSION"
function abc() # wait for some event to happen, can be terminated by other process
{
echo "inside a subshell $BASHPID" # This gives you the PID of the current instance of Bash.
sleep 3333
}
echo "PID: $$" # (i)
abc &
echo "PID: $$" # (ii)
echo "another way $!" # This gives you the PID of the last job run in background
echo "same than (i) and (ii) $BASHPID" # This should print the same result than (i) and (ii)
sh-4.2$ ps ax|grep foo
25094 pts/13 S 0:02 vim foo.sh
25443 pts/13 S+ 0:00 grep foo
sh-4.2$ ./foo.sh
version: 4.2.39(2)-release
PID: 25448
PID: 25448
another way 25449
same than (i) and (ii) 25448
inside a subshell 25449
sh-4.2$ ps ax|grep foo
25094 pts/13 S 0:02 vim foo.sh
25449 pts/13 S 0:00 /bin/bash ./foo.sh
25452 pts/13 S+ 0:00 grep foo
乾杯、
答え2
$を探していると思います!
function abc() # wait for some event to happen, can be terminated by other process
{
sleep 3333
}
echo "PID: $$"
abc &
echo "PID: $!"