如果只有一个实例正在运行,请继续脚本

Gar*_*uth 6 bash if-statement

现在这很尴尬.我正在编写快速脚本,我无法弄清楚为什么这个语句不起作用.

if [ $(pidof -x test.sh | wc -w) -eq 1 ]; then echo Passed; fi
Run Code Online (Sandbox Code Playgroud)

我也尝试使用back-ticks而不是$(),但它仍然不起作用.

你能看出它有什么问题吗?pidof -x test.sh | wc -w如果我在脚本中运行它,则返回1,所以我看不出为什么基本上if [ 1 -eq 1 ]不会通过的任何原因.

非常感谢!

Kev*_*tle 6

Jefromi是正确的; 这是我认为你想要的逻辑:

#!/bin/bash
# this is "test.sh"

if [ $(pidof -x test.sh| wc -w) -gt 2 ]; then 
    echo "More than 1"
    exit
fi

echo "Only one; doing whatever..."
Run Code Online (Sandbox Code Playgroud)