的Linux管我不知道如何创建一个管道与多个程序要求用户输入
program 1 | ... | program N
在程序的多个要求用户输入。问题是|
并行启动程序,因此它们开始从终端并行读取。
对于这样的情况,只有在程序i产生了一些输出后,才有一个管道|
启动程序(i + 1)会很有用。
编辑:
例子:
cat /dev/sda | bzip2 | gpg -c | ssh [email protected] 'cat > backup'
这里既有gpg -c
以及ssh
询问密码。
对于这个特定的例子,一个解决方法是创建ssh密钥对,但这在每个系统上都是不可能的,我想知道是否有一个通用的解决方案。 此外,gpg允许将口令作为命令行参数传递,但出于安全原因不建议这样做。
一旦一个程序连接到一个管道,它从另一个程序,而不是用户的输入。你确定你想要一个管道吗?我无法真正想到一个程序,它们都需要用户输入*和*从标准输入读取。 – chepner 2012-08-02 22:32:23
不是一个答案,而是一个可能指向正确方向的想法:是否可以在每个程序周围包含代码,以检查特定字符串的输出,更新一次发现的标志并让其他调用循环直到前一个程序的标志为止更新,然后让他们跑? – JohnLBevan 2012-08-02 22:53:00
显示这种情况的具体示例。一个程序可以从'stdin'和'/ dev/tty'中读取,但这是不常见的。 – 2012-08-03 01:01:44