salt中$?不正确问题

发布时间:2023年12月21日

根据您提供的信息,确实存在在目标机器上直接执行?grep?命令返回1,但通过 SaltStack 执行相同命令返回0的情况。

可能的原因是在 SaltStack 执行命令时,使用了不同的 Shell 解释器,导致变量?$??的解释和处理方式不同。

在目标机器上直接执行命令时,Shell 解释器会将?$??视为上一个命令的退出状态码。因此,当?grep?命令在文件中未找到匹配项时,返回1。

而在 SaltStack 中,执行命令使用的是默认的 Salt Minion Shell 解释器,该解释器可能会以不同的方式处理?$??变量。它可能会将?$??视为 Salt Minion 进程的退出状态码,而不是上一个命令的退出状态码。因此,即使?grep?命令未找到匹配项,Salt Minion 进程的退出状态码仍然为0。

为了解决这个问题,您可以使用以下命令,将?$??作为字符串传递给?echo?命令:

plaintext

复制

salt "*aa" cmd.run runas=tiger "grep aa /opt/tiger/aa.options; echo \$?"

在这个命令中,使用了?\$??来转义?$?,确保?$??在目标机器上被解释为上一个命令的退出状态码。

这样您就可以获取到正确的退出状态码,以便判断?grep?命令是否在文件中找到匹配项。

文章来源:https://blog.csdn.net/qq_32907195/article/details/135131264
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。