salt中$?不正确问题
2023-12-21 15:40:35
根据您提供的信息,确实存在在目标机器上直接执行?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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!