在编写 bash 脚本时。有时您正在运行一个打开另一个程序的命令,例如 npm、composer.. 等。但同时您需要使用read
它来提示用户。
你不可避免地会遇到这种错误:
read: read error: 0: Resource temporarily unavailable
在做了一些研究之后,似乎有一个解决方案,方法是将那些操纵 bash 脚本的 STDIN 的程序的 STDIN 管道传输到 /dev/null。
就像是:
npm install </dev/null
其他研究表明,这与 STDIN 被设置为某种阻塞/无阻塞状态并且在程序完成后它没有被重置有关。
问题是有某种万无一失的优雅方式来读取用户提示的输入,而不会受到那些操纵 STDIN 的程序的影响,也不必寻找哪些程序需要将其 STDIN 重定向到 /dev/null。您甚至可能需要使用这些程序的 STDIN!