Bash 对交互式脚本使用yes会导致退出代码141

Bash 对交互式脚本使用yes会导致退出代码141,bash,printf,circleci,Bash,Printf,Circleci,我需要在CircleCI中运行一个命令,该命令将预先确定的参数传递给下面的命令。当命令只需要字符串或整数时,可以使用: printf "arg1\narg2\n" | my_command 但如果“我的命令”要求用户使用箭头键选择一个选项,然后使用返回键,则此方法将失败 下面是我正在描述的一个例子: ? Which variation would you like to apply? (Use arrow keys) ❯ A B C 因此,我尝试了另一种选择,找到了一个名为yes的漂

我需要在CircleCI中运行一个命令,该命令将预先确定的参数传递给下面的命令。当命令只需要字符串或整数时,可以使用:

printf "arg1\narg2\n" | my_command
但如果“我的命令”要求用户使用箭头键选择一个选项,然后使用返回键,则此方法将失败

下面是我正在描述的一个例子:

? Which variation would you like to apply? (Use arrow keys)
❯ A
  B
  C
因此,我尝试了另一种选择,找到了一个名为yes的漂亮工具:

yes | my_command
这实际上会起作用(并选择选项A),但由于退出代码141,它会导致在CircleCI中生成失败。据我所知,退出代码之所以出现,是因为yes仍在向已退出的进程发送输入


还有其他方法可以实现吗?

您可以尝试使用交互式程序编程对话

我可以通过使用双管道将错误改写为true

yes | my_command || true
这是可行的,但它覆盖了序列可能抛出的任何错误,使我的CI测试长青。这并不理想,但确实有效

(yes || true) | my_command
这样可以忽略
yes
中的结果代码,但保留
my_命令中的结果代码

有更好的答案