首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Bash条件中的假阳性

Bash条件中的假阳性
EN

Stack Overflow用户
提问于 2020-03-30 18:53:18
回答 1查看 44关注 0票数 0

我正在编写一个bash脚本来检查多个服务器上是否安装了Tomcat5。运行脚本时,即使存储在变量command中的find命令不返回任何内容,tomcat变量在if语句中仍被设置为'1‘。

我知道if语句肯定有问题,但我不确定是什么问题。下面是在远程服务器上运行该命令的函数

代码语言:javascript
复制
function search() {

        local login=$1
        local server_fqdn=$2

        local command="sudo find / -name \"tomcat-5*\""
        ssh -oBatchMode=yes -o ConnectTimeout=6 $login@$server_fqdn "$command"
        if [ "$?" = 0 ];
        then
                echo "Tomcat found"
                tomcat=1
        else
                echo "No tomcat here!"
        fi
}

如果command不返回任何内容,我如何让函数进入'else‘条件?

EN

回答 1

Stack Overflow用户

发布于 2020-03-30 19:12:20

直接的问题是:无论是否找到任何东西,find都会在没有失败的情况下返回0,您可能会假设它的行为类似于grep,但事实并非如此。您可以捕获它的输出res=$(find ...)并测试它是否为空(test -n),但是...

但老实说,这是一种相当奇怪的方式来检测安装的软件是否存在,这很容易出错。至少可以这样说,假设您留下了一个包含注释的文件:my_tomcat-5_hints

也许可以询问您的打包管理器是否在主机上使用...或者至少检查特定文件/dir的存在?

你通常不需要是超级用户就能告诉你,如果你是这样做的话,在下一步如果真的需要的话,以一个用户的身份sshsudo是有点奇怪的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60928976

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档