逐行输入stdin

时间:2014-07-13 10:22:00

标签: bash shell

我有一个命令,通过stdin迭代输入,直到遇到EOF。我想通过编写一个shell脚本来自动执行此过程,该脚本将从文件中读取每一行并将其提供给此命令。我无法弄清楚如何为stdin喂食线。

FILENAME=$1
cat $FILENAME | while read LINE
do
    java -cp stanford-corenlp-3.4.jar:stanford-corenlp-3.4-models.jar:xom.jar:joda-time.jar:jollyday.jar:ejml-0.23.jar -mx2g edu.stanford.nlp.sentiment.SentimentPipeline -stdin < $LINE
done

但我得到了一个&#34;模糊重定向&#34;错误。我刚刚开始使用shell脚本。我不知道如何去做这个

编辑:我更改了代码,以便每次都不启动程序

FILENAME=$1
while read LINE
do
    java -cp stanford-corenlp-3.4.jar:stanford-corenlp-3.4-models.jar:xom.jar:joda-time.jar:jollyday.jar:ejml-0.23.jar -mx5g edu.stanford.nlp.sentiment.SentimentPipeline -stdin < $LINE
done <$FILENAME

1 个答案:

答案 0 :(得分:1)

如果您的Java程序逐行读取标准输入,而您希望它从文件中读取,您只需:

java -cp xxx.jar YourProgram < "Path/to/the/file"

,这将与您的计划完美配合。

无需在脚本中逐行读取文件!