本文介绍了如果只有一个实例正在运行,是否继续脚本?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

现在这很尴尬.我正在编写快速脚本,但我不明白为什么这个语句不起作用.

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..."

这篇关于如果只有一个实例正在运行,是否继续脚本?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-23 05:29