我有一个问题,我有一个非常简单的脚本,它在循环中启动 anpther 二进制文件,它看起来像这样:
for (( i=0; \\$i <= 5; i++ )) ; do
test.sh
done
Run Code Online (Sandbox Code Playgroud)
现在的问题是,每次执行之后 test.sh 都会问我是否要覆盖日志,例如“你想覆盖日志吗?[是/否]”
在出现该提示后,脚本暂停并停止迭代,直到我手动按 Y 并继续直到出现另一个提示。
为了自动化过程,我可以模拟按下“Y”按钮吗?
我相信yes如果您的test.sh脚本不将其标准输入用于其他目的,使用可能就足够了:默认情况下yes会产生无限的行流y,或者您将其作为参数传递的任何其他字符串。每次test.sh检查用户输入时,它都应该使用该输入的一行并继续其操作。
使用yes Y,你可以为你的test.sh脚本提供Y比它需要的更多的东西:
yes Y | test.sh
Run Code Online (Sandbox Code Playgroud)
要将它与您的循环一起使用,您最好将其通过管道传输到循环的 stdin 而不是test.sh调用:
yes Y | for (( i=0; i <= 5; i++ )) ; do
test.sh
done
Run Code Online (Sandbox Code Playgroud)