Bash比较字符串与整数不起作用

时间:2014-09-17 04:49:04

标签: linux bash

我有一个bash脚本如下

#!/bin/bash
PROCESS=ps aux | grep [f]fmpeg -c

if [[ $PROCESS -gt 0 ]]
then
echo "process is more then 0"
fi

但是,当我进行检查时,即使发现的结果大于0,我的if语句也应该是真的,但不会被启动。我不确定比较有什么问题。

4 个答案:

答案 0 :(得分:1)

你想要这个:

if ps aux | grep [f]fmpeg
then
    ....

如果没有匹配的行,这样做是为了跳过grep中“失败”的“if”。如果您真的想要进行计数,可以修改原始代码:

PROCESS=$(ps aux | grep [f]fmpeg -c)

答案 1 :(得分:1)

返回tic执行命令并将结果赋值给PROCESS变量 但是您正在检查流程的数量,因此wc -l找到行的总数。

#!/bin/bash
PROCESS=`ps aux | grep [f]fmpeg -c | wc -l`

if [[ $PROCESS -gt 0 ]]
then
echo "process is more then 0"
fi

答案 2 :(得分:0)

试试这个:

if [ "$PROCESS" -ne "0" ]

答案 3 :(得分:0)

要从某个命令获取输出,您应该使用“`”引用,如下所示。

#!/bin/bash
PROCESS=`ps aux | grep [f]fmpeg -c`

if [[ $PROCESS -gt 0 ]]
then
    echo "process is more then 0"
fi