Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
bash将stdin重定向到脚本_Bash_Redirect_Pipe_File Descriptor - Fatal编程技术网

bash将stdin重定向到脚本

bash将stdin重定向到脚本,bash,redirect,pipe,file-descriptor,Bash,Redirect,Pipe,File Descriptor,我阅读了一些bash I/o教程,但其中大多数都涉及到将流重定向到文件或从文件重定向到流 我的问题如下:如何将stdin/stdout/stderr重定向到脚本(或程序) 例如,我有脚本“parentScript.sh”。在这个脚本中,我想调用blackbox“childScript.sh”,它只需要几个参数-arg1-arg2。。。并从标准输入读取输入 我的目标是在parentScript.sh中为childScript.sh提供一些输入: ... childScript.sh -arg1 -

我阅读了一些bash I/o教程,但其中大多数都涉及到将流重定向到文件或从文件重定向到流

我的问题如下:如何将stdin/stdout/stderr重定向到脚本(或程序)

例如,我有脚本“parentScript.sh”。在这个脚本中,我想调用blackbox“childScript.sh”,它只需要几个参数-arg1-arg2。。。并从标准输入读取输入

我的目标是在parentScript.sh中为childScript.sh提供一些输入:

...
childScript.sh -arg1 -arg2
????? < "input1"
????? < "input2"
...
如何解决这两种情况?谢谢

编辑: 更具体地说。我想制作自己的管道(命名或不命名),并使用它们连接多个程序或脚本,以便它们相互通信


例如:program1写入program2和program3,并从program2接收数据。program2写入program1和program3,并从program1接收数据。program3只接收program1和program2的表单。

管道
|
是您的朋友:

./script1.sh | ./script2.sh
将标准输出从
script1.sh
发送到
script2.sh
。如果您还想发送stderr:

./script1.sh 2>&1 | ./script2.sh
只有标准:

./script1.sh 2>&1 >/dev/null | ./script2.sh
您还可以在此处制作文档:

./script2.sh << MARKER
this is stdin for script2.sh.
Variable expansions work here $abc
multiply lines works.
MARKER

./script2.sh << 'MARKER'
this is stdin for script2.sh.
Variable expansions does *not* work here
$abc is literal
MARKER

管道
|
是您的朋友:

./script1.sh | ./script2.sh
将标准输出从
script1.sh
发送到
script2.sh
。如果您还想发送stderr:

./script1.sh 2>&1 | ./script2.sh
只有标准:

./script1.sh 2>&1 >/dev/null | ./script2.sh
您还可以在此处制作文档:

./script2.sh << MARKER
this is stdin for script2.sh.
Variable expansions work here $abc
multiply lines works.
MARKER

./script2.sh << 'MARKER'
this is stdin for script2.sh.
Variable expansions does *not* work here
$abc is literal
MARKER

您可以使用以下HEREDOC语法:


childScript.sh-arg1-arg2您可以使用以下HEREDOC语法:


childScript.sh-arg1-arg2可能是现在的重复,这可能太广泛了。编程管道构建的许多技术(如递归函数执行组件)是否适用取决于您没有提供的细节。[此外,“澄清”一个问题的方式在已经给出答案后会极大地改变其含义,这并不是一种特别好的形式,因为它会使先前的答案变得毫无用处]。这是一个很好的观点。我将制作新的线程这行代码到底是什么“输入1”
应该怎么做?也许人们不理解你的问题的部分原因是你希望我们从极其不清楚的伪代码中直觉地理解你的意图。这意味着?????要成为指向被调用脚本的sth,比如现在可能的文件描述符的副本,这可以说是太宽泛了。编程管道构建的许多技术(如递归函数执行组件)是否适用取决于您没有提供的细节。[此外,“澄清”一个问题的方式在已经给出答案后会极大地改变其含义,这并不是一种特别好的形式,因为它会使先前的答案变得毫无用处]。这是一个很好的观点。我将制作新的线程这行代码到底是什么“输入1”
应该怎么做?也许人们不理解你的问题的部分原因是你希望我们从极其不清楚的伪代码中直觉地理解你的意图。这意味着?????指向被调用脚本的sth,类似于文件描述符的sth