本文介绍了如果只有一个实例正在运行,是否继续脚本?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
现在这很尴尬.我正在编写快速脚本,但我不明白为什么这个语句不起作用.
now this is embarrassing. I'm writing quick script and I can't figure out why this statement don't work.
if [ $(pidof -x test.sh | wc -w) -eq 1 ]; then echo Passed; fi
我也尝试使用反引号代替 $() 但它仍然不起作用.
I also tried using back-ticks instead of $() but it still wouldn't work.
你能看出它有什么问题吗?pidof -x test.sh |如果我在脚本中运行 wc -w
返回 1,所以我看不出有什么理由基本上 if [ 1 -eq 1 ]
不会通过.
Can you see what is wrong with it? pidof -x test.sh | wc -w
returns 1 if I run it inside of script, so I don't see any reason why basically if [ 1 -eq 1 ]
wouldn't pass.
非常感谢!
推荐答案
Jefromi 是正确的;这是我认为你想要的逻辑:
Jefromi is correct; here is the logic I think you want:
#!/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..."
这篇关于如果只有一个实例正在运行,是否继续脚本?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!