微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在Shake中获取控制台输入的内部版本?

如何解决如何在Shake中获取控制台输入的内部版本?

由于各种不幸的原因,我的构建的一部分需要root特权。我正在尝试使用sudo

cmd_ "sudo other_script.sh" [input] [output]

但是,大概是由于Shake处理控制台输入/输出的方式,当sudo运行时,我实际上无法输入密码。我尝试将WithStderr False传递给cmd_,并将shakeLineBuffering=False设置为无效。

允许命令提示用户输入的正确方法是什么?如果不存在这样的事情,还有另一种好的方法来做类似的事情吗?

解决方法

您要查找的设置是InheritStdin,可确保将标准输入提供给该过程,因此您实际上可以输入密码。您可能还需要设置EchoStderrEchoStdout,以便看到密码提示。

或者,您不必使用cmd。在Shake内部,cmd已针对符合人体工程学的紧密集成运行命令进行了优化。但是,如果需要更多控制,使用默认的System.Process模块就足够了,例如:

liftIO $ System.Process.system "sudo script input output"

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。