Bash:从标准输入执行管道

Sab*_*lfy 5 scripting shell bash pipe

经过一番搜索,我还没有找到解决方案。我认为搜索词太笼统了。我想知道如何执行由其他来源生成的多行(在 bash 提示符下)。例如,我有一个 Python 脚本,它动态生成许多 bash 命令并将print它们发送到标准输出。我希望将这些行作为 bash 脚本执行,而不必将它们保存到磁盘。例如:

$ python example.py
touch 1 2 3 4 5
rm 1 2 3 4 5
echo "Done"
Run Code Online (Sandbox Code Playgroud)

我想做类似的事情:

$ python example.py | executeLines
Run Code Online (Sandbox Code Playgroud)

bash 中是否存在这样的命令/功能?有时其中一个命令可能会以非零退出状态退出,因此附加&&到每个命令然后运行:

$ `python example.py`
Run Code Online (Sandbox Code Playgroud)

不会总是有效,似乎是一个笨拙的解决方案。

Mad*_*ter 11

你有没有尝试过

$ python example.py | bash
Run Code Online (Sandbox Code Playgroud)

它应该有效,因为这是一个足够常见的技巧。例如,监控工具 munin 有一个节点配置器(munin-node-configure),它告诉你可以运行哪些插件,然后在直接通过管道传输时获取一个--shell标志,使其吐出一堆ln -s命令以链接插件猛击。

甚至曾经有一个用于配置某些东西的工具——它是在 15 年前,我不记得是什么——你在哪里成为 root 并通过打开一个自动配置器的 telnet 会话来完成配置并将输出直接发送到 bash , 和

# telnet example.com 7001 | bash
Run Code Online (Sandbox Code Playgroud)

我无法想象这些天做这样的事情。