从标准输入读取完整文件并将其提供给ksh中的命令

时间:2014-06-07 19:24:29

标签: shell ksh

我正在尝试将标准输入中给出的文件内容读入脚本。任何想法如何做到这一点? 基本上我想要的是:

someScript.ksh < textFile.txt

在ksh中,我使用二进制文件,如果在标准输入上给出文件,它将从“textFile.txt”读取数据。 任何想法如何将给定输入文件的内容(如果有的话)传递给脚本中的另一个二进制文件?

1 个答案:

答案 0 :(得分:2)

你还没有给我们足够的信息来回答这个问题,但这里有一些想法。

如果您有一个脚本要接受 stdin 上的数据,并且该脚本调用其他需要在命令行上作为文件名传入数据的内容,则可以使用 stdin 并将其转储到临时文件中。类似的东西:

#!/bin/sh

tmpfile=$(mktemp tmpXXXXXX)
cat > $tmpfile
/some/other/command $tmpfile
rm -f $tmpfile

(实际上,您可能会在退出时使用trap来清理临时文件。


如果脚本正在调用期望在 stdin 上输入的另一个命令,那么你真的不需要做任何特别的事情。在您的脚本中,您调用的任何内容的 stdin 将连接到调用脚本的 stdin ,只要您以前没有使用过输入,您应该是全套。

例如,给出这样的脚本:

#!/bin/sh

sed s/hello/goodbye/

我可以跑:

echo hello world | sh myscript.sh

得到:

goodbye world