Bash将文件读入脚本

时间:2014-01-10 21:32:04

标签: bash redirect stdin

好的我有一个非常奇怪的问题,很多人可能会问为什么。

我需要将文件读入脚本并立即输出回新文件。我想更合适的是,我将流式传输到脚本并输出到文件。

我们的开发团队的一个java进程将调用我的脚本(script.sh),它将读取一个“文件”和一些变量。

我知道你可以做到以下几点:

./script.sh var1 var2 var3

这将允许您通过$ 1 $ 2和$ 3

访问这些变量

这很好,他们将如何将一些东西传递给脚本,但是他们还需要读取XML文件(但它还不是真正的文件。它只是从java进程输出)。我认为这是如何运作的。

./script var1 var2 var3 < file

基本上,我的脚本需要做的第一件事就是输出“file”来说file.xml,然后脚本会以快乐的方式运行并开始处理变量并做其他需要做的事情。

我假设传入脚本的文件是stdin,所以我尝试了这样的事情:

0> file.xml

/dev/stdin > file.xml

但没有任何作用。我想我只是犯了很大的概念错误。有人可以帮忙吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

使用cat

cat > file.xml

没有参数,cat从stdin读取并写入stdout。

至于你的概念错误,你并不认为文件描述符只是整数而不能自己做任何工作(如移动数据)。您需要一个可以从一个读取并写入另一个的进程。

移动数据的另一个熟悉的过程是cp,你确实可以做cp /dev/stdin file.xml,但这不是惯用的,并且有一些陷阱。