Linux Jenkins如何处理交互式Shell脚本?

Linux Jenkins如何处理交互式Shell脚本?,linux,shell,jenkins,Linux,Shell,Jenkins,我正在编写两个Linux shell脚本来移动一些代码,如果这些脚本可以交互的话,那将是非常好和简单的 缺点是我想在Jenkins中执行其中一些脚本,但不完全确定Jenkins如何处理脚本中的用户提示。我还没有在这方面找到太多的东西,也没有足够的资源去测试它,所以任何建议都将不胜感激 谢谢大家如果Jenkins执行的命令需要输入,它会坐在那里等待输入。作业将挂起,您需要手动终止它。解决这一问题的一种方法是通过管道将预期的输入输入到命令中,例如 echo "input" | command 或

我正在编写两个Linux shell脚本来移动一些代码,如果这些脚本可以交互的话,那将是非常好和简单的

缺点是我想在Jenkins中执行其中一些脚本,但不完全确定Jenkins如何处理脚本中的用户提示。我还没有在这方面找到太多的东西,也没有足够的资源去测试它,所以任何建议都将不胜感激


谢谢大家

如果Jenkins执行的命令需要输入,它会坐在那里等待输入。作业将挂起,您需要手动终止它。解决这一问题的一种方法是通过管道将预期的输入输入到命令中,例如

echo "input" | command

command
您可以从Jenkins运行交互式shell脚本

以下是相关文件:


使用
您可能想要签出。这是一个经典问题。从有限的意义上讲,交互式的东西对人类的呼叫者来说是很好的。但是批处理对于自动化(脚本调用程序)来说要好得多。我建议写几乎所有的东西都是为了批量使用,真的,除非你在用文字处理器或其他东西,因为从长远来看,批处理脚本优越的可组合性最终是一个巨大的胜利。这不仅仅是因为您可以更实际地构建批处理脚本;使用批处理接口进行自动化测试也容易得多,因此代码最终更加可靠。谢谢。我一直在使用expect,但为了做我想做的事情,似乎有一些奇怪的工作,我宁愿避免,谢谢您的快速响应。实际上,我正在尝试做类似于
echo“输入密码:”;读取密码
,让用户动态输入密码。从您上面所说的(?)看来这是可以接受的,
读取将阻塞,直到您手动终止作业。假设您将结果存储在一个环境变量中,您可以在Jenkins作业中相应地设置该变量,并且在脚本中,如果未设置该变量,则只需要用户输入。对不起,我应该更明确一些。真正的命令是一个
scp
,因此除非使用expect,否则它将强制提示。你说提示会“阻塞”。我知道它会停止进程并等待输入,但是用户能够在Jenkins内响应该提示吗?(有点像詹金斯的书,如果你不知道的话)不,詹金斯的工作一旦开始就不是互动的。唯一的实际选择是在发生类似情况时终止作业。@degausser,您可以使用ssh密钥绕过为
scp
键入密码的问题。很好的例子说明了为什么只链接的答案如此糟糕:您的链接是downURL无法访问
command < file_with_input