samedi 23 mai 2020

Bash if -gt also triggered when values equal?

I want my script to check if it's already running in another instance:

$ cat test.sh 
#!/bin/bash

ps -ef | grep -v grep | grep -i "test.sh" | grep bash
ps -ef | grep -v grep | grep -i "test.sh" | grep -c bash

if [ `ps -ef | grep -v grep | grep -i "test.sh" | grep -c bash` -gt 1 ]; then echo "There's another instance running."
else echo "Only this instance is running."
fi

However the output is

$ ./test.sh 
noes   9503  7494  0 09:32 pts/1    00:00:00 /bin/bash ./test.sh
1
There's another instance running.

Clearly, 1 is not greater than 1, so why is the if condition triggered?

Thanks

Aucun commentaire:

Enregistrer un commentaire