Bash - 为什么这种情况不符合我认为应该做的?

时间:2011-08-11 12:48:31

标签: bash shell scripting

这基本上是我在bash中的第一个脚本,所以我可能会遗漏一些非常简单的东西。

我不明白为什么即使firefox没有运行,"$(pgrep firefox)"似乎也会返回一些内容。

脚本应始终保持运行firefox实例。

#!/bin/bash
while true;
do
        if [ -z "$(pgrep firefox)" ]
                then
                        echo "firefox not running. Starting now..."
                        firefox
        fi
done

真正奇怪的是,如果我在bash命令提示符下键入它,它按预期工作

if [ -z "$(pgrep firefox)" ];  then echo "not running"; fi

1 个答案:

答案 0 :(得分:3)

您是否尝试打印$(pgrep firefox)的结果以查看返回的内容?

顺便说一下,你不需要在这里比较字符串。如果找到进程,pgrep将返回true,否则返回false,因此您可以执行此操作:

if ! pgrep firefox
then
    echo firefox not running
fi