首页 > 解决方案 > 如何在 bash shell 中执行一个输出不是另一个函数的函数?

问题描述

我有一个现有函数 is_active_instance,它确定数据库实例是否正在运行(真)。我正在使用一个名为 is_inactive_instance 的新函数,如果 is_active_instance 返回 false,则该函数需要返回 true。

如何从 is_inactive_instance 调用 is_active_instance 并否定它的返回以将 True 返回到主程序?

我已经尝试过调用 is_instance_active !改变原始函数的结果。

is_active_instance(){
    dbservice=""
    if is_mysql_db
    then
        dbservice="mysqld"
    elif is_mariadb_db
    then
        dbservice="mysqld"
    elif is_postgre_db
    then
        dbservice='postgresql'
    fi
    [ $(ps -ef | grep -v grep | grep $dbservice* | wc -l) > 0 ]
}

is_inactive_instance(){
    [ [ ! is_active_instance ] ]
}

if is_active_instance
then
        echo "Is active instance"
elif is_inactive_instance
then
        echo "Is inactive instance"
else
        echo "Other result"
fi

在主体中,我需要能够检测实例是否正在运行、停止或其他目的。

标签: databasebashfunctionshellredhat

解决方案


不要使用任何[s:

is_inactive_instance(){
    ! is_active_instance
}

另请参阅比较 Bash 中的数字以了解如何进行is_active_instance工作。


推荐阅读