小编Mat*_*zyk的帖子

透明使用临时文件作为管道手段

正如我们许多人肯定知道的那样,让您的程序接受 stdin 输入总是一个好主意。很多程序确实允许使用 *nix 环境。这让我们可以做一些很酷的事情,比如管道 echo "foo" | less。很多时候人们会发现这cat barfile | baz在逻辑上等同baz barfile于在幕后它只是读取字符串。

如今,有更多的程序默认无法通过管道传输。一些程序具有仍然允许上述行为的标志,但许多程序没有。

现在,我的问题是,是否存在临时文件管道?

现在,由于我几乎不具备编写 Bash 的能力和在 Google 上大约 5 分钟的时间,我想出了这个

#!/bin/bash
if [ $# -ne 2 ]; then exit 1; fi
f=$(mktemp)
($1) > $f
if [ $? -eq 0 ]; then ($2 $f); else exit $?; fi
rm $f
Run Code Online (Sandbox Code Playgroud)

调用这个 fpipe,我们可以做一些事情,比如fpipe 'wget -O- www.example.com' bazbaz 是一个我们不能管道但可以做的程序baz file

我的问题是我们怎样才能做得更好。我怀疑有了更多的 Bash 知识,重新编写上面的脚本来接受任何数量的参数将是相当微不足道的(这样我们就可以做一些事情,比如fpipe 'foo x' bar baz在管道中我们可以做类似的事情foo x …

linux bash zsh shell pipe

3
推荐指数
1
解决办法
204
查看次数

标签 统计

bash ×1

linux ×1

pipe ×1

shell ×1

zsh ×1