为什么传递的参数在我的shell脚本中不起作用



我想写一个shell脚本来检查进程是否正在运行:

#!/bin/bash
var=$1
ps -ef|grep $var|grep -v grep > /dev/null
if [ $? -eq 0 ]
then
echo $var is running!
else
echo $var is not running!
fi

然而,无论我在命令行中输入什么参数,结果总是显示">xxx正在运行";。如下所示:

[test@XXXserver ~]$ sh check.sh 23ljfado
23ljfado is running!

但是,如果我直接在脚本中指定参数,结果就会正确显示。例如,如果脚本中的变量var更改为var=23ljfado,则结果如下所示:

[test@XXXserver ~]$ sh check.sh
23ljfado is not running!

如果我将var更改为正在运行的进程,例如,让脚本中的var=python,那么结果是">python正在运行";

我希望这个变量可以通过命令行参数传递到脚本中,但为什么传递的参数在我的shell脚本中不起作用

ps输出还包括shell脚本及其会导致检查失败的参数。在这种情况下,您将不得不再提供一个条件来消除自身

#!/bin/bash
var="$1"
name=$(basename $0)
ps -ef|grep $var|grep -v -e grep -e $name > /dev/null
if [ $? -eq 0 ]
then
echo $var is running!
else
echo $var is not running!
fi

相关内容

  • 没有找到相关文章

最新更新