gpt4 book ai didi

linux - 使用 Bash 读取标准输入,就好像它来自文件一样?

转载 作者:太空宇宙 更新时间:2023-11-04 04:42:19 25 4
gpt4 key购买 nike

假设我有一个脚本:

foo.sh

期望打开两个文件:

./foo.sh biz baz
<小时/>

在这种情况下,我已经预先计算了文件,并希望从管道传递到 foo.sh 就好像它是一个文件(就像我对 c 可执行文件所做的那样):

# in pseudo code
./bar.sh initial_baz | ./foo.sh biz -
<小时/>

我尝试过的解决方案:

./bar.sh initial_baz ...
| ./foo.sh biz -
| ./foo.sh biz /dev/stdin
| ./foo.sh biz </dev/stdin
| ./foo.sh biz <$(/dev/stdin)
| ./foo.sh biz $(/dev/stdin)
./foo.sh biz $(./bar.sh initial_baz)
./foo.sh biz <$(./bar.sh initial_baz)
./foo.sh biz `./bar.sh initial_baz`

etc.

必须有一种方法可以像 stdin 是一个文件一样进行重定向...?

最佳答案

这应该有效:

./bar.sh initial_baz | ./foo.sh biz /dev/stdin

您还可以使用process substitution .

./foo.sh biz <(./bar.sh initial_baz)

但在某些情况下,管道不起作用(进程替换在内部使用管道):如果 foo.sh 尝试多次打开文件,或者需要在文件中查找。管道是一个 FIFO 队列,您不能多次查找或读取它。

关于linux - 使用 Bash 读取标准输入,就好像它来自文件一样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57824947/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com