繁体   English   中英

如何使用初始输入作为 SCons Phony 目标调用交互式 shell?

[英]How can I Invoke interactive shell with initial input as SCons Phony target?

在实现自定义 SCons 工具链时,我遇到了需要调用 shell 作为Phony目标且已提供初始输入的情况,因此我可以继续为已调用的命令提供输入。

基本上,我想要的是声明具有所需行为的Phony目标:

# ...
def invoke_shell(target, source, env):
    initial_input = '...'
    # Some steps to interactive command with already provided initial_input

shell = env.Command(Alias('some-shell'), [],
    invoke_shell)
env.AlwaysBuild(shell)

我尝试的是编写以下SConstruct文件来覆盖没有初始输入的案例:

# ...
def invoke_yosys(target, source, env):
    return 'yosys'

yosys_shell = env.Command(Alias('yosys-shell'), [],
    invoke_yosys)
env.AlwaysBuild(yosys_shell)

所以当我调用scons -Q yosys-shell我应该得到 Yosys shell,但一般情况下它可以是任何交互式命令。 我期望的是 shell 是交互式调用的,即我可以输入命令,而 Yosys shell 将在提供输入的同时交互式地执行命令。 但它不起作用。 它立即退出,就好像stdin映射到/dev/null一样。

您不想使用 Command() 因为它被推迟到树遍历,您希望它在构建的 rest 之前立即运行,对吗?

您想在命令行上检测目标,然后使用 Execute() 或 os.system() 触发命令。

有关获取命令行目标的信息,请参见此处

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM