I'm trying to make sure my script only runs once at a time, but im running into weird behavior with inverting grep.
My Code:
echo "Current Pid: $$"
# Output "Current Pid: 5387"
echo "Process Count: $(pgrep -c -f "$0")"
# Output: Process Count: 2
if [ "$(pgrep -c -f "$0")" -gt 1 ]
then
    echo All Pids
    pgrep -f "$0"
    # Output "4978, 5387"
    echo Pids Current
    echo "$(pgrep -f "$0" |& grep -F $$)"
    # Output "5387"
    echo Pids Inverted
    echo "$(pgrep -f "$0" |& grep -Fv $$)"
    # Output "4978, 5394"
    # processPidsToKill="$(pgrep -f "$0" |& grep -Fv $$)"
    # for processPid in $processPidsToKill; do
    #     echo "Killing `basename "$0"` $processPid"
    #     kill "$processPid"
    # done
fi
Can someone tell me what im doing wrong? Where does the new Pid come from when im using "grep -v"?
 
    