首页 > 解决方案 > 如何在 Shake 中获取控制台输入?

问题描述

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

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

sudo但是,大概是因为 Shake 处理控制台输入/输出的方式,我在运行时实际上无法输入密码。我曾尝试传递WithStderr Falsetocmd_以及 setting shakeLineBuffering=False,但无济于事。

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

标签: shake-build-system

解决方案


您正在寻找的设置是InheritStdin确保将标准输入提供给进程,因此您可以实际输入密码。您可能还需要设置EchoStderrorEchoStdout才能看到密码提示。

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

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

推荐阅读