【发布时间】:2014-09-18 06:35:16
【问题描述】:
我正在终端执行这样的shell文件:
./cherrypicker.sh input.txt
input.txt 包含输入文本。
我的目的是直接将input text 作为 Web 界面的命令行参数传递
我检查了 cherrypicker.sh 文件,以获得一些线索。它有
tools/pos/pos.sh tools/pos $1 > $1.pos 2> /dev/null
如果$1 是来自input.txt 的文本,那么我可以直接传递文本。但是当我做echo $1 时,它会给出input.txt。
我无法理解这里的> 以及2 和/dev/null 表示的是什么
任何解释都会很有意义。我检查了 .sh 文件,但文章说它的 shell 文件等同于 .bat 文件
Cherrypicker.sh
#!/bin/bash
echo "running stanford pos tagger..."
tools/pos/pos.sh tools/pos $1 > $1.pos 2> /dev/null
echo $1.pos
echo "running stanford ner tagger..."
tools/ner/ner.sh tools/ner $1 > $1.ner 2> /dev/null
echo "running charniak parsing..."
java MakeCharniakInput $1
tools/charniak-parser/PARSE/parseIt -l300 tools/charniak-parser/DATA/EN/ $1.charniakIN > $1.charniak
echo "running minipar parsing..."
tools/minipar/pdemo/pdemo -p tools/minipar/data/ < $1 > $1.minipar
echo "detecting mentions..."
java MentionDetection $1
tools/crf++/crf_test -m modelmd $1.crf > $1.pred
java CreateNPSpan $1 $1.pred
# if [[ $1 = "mp" ]]
# then
# echo "creating feature file...."
# java -cp .:edu.mit.jwi.jar CherryPick mp raw.txt
# echo "classifying clusters using $1 model....."
# tools/svmmentionpair/svm_classify raw.txt.mpsvm modelmp raw.txt.mppred
# java MakeCluster raw.txt raw.txt.mppred
# elif [[ ( $1 = "mr" ) || ( $1 = "cr" ) ]]
# then
echo "creating feature file...."
java -cp .:edu.mit.jwi.jar CherryPick cr $1
echo "classifying clusters using cr joint model....."
tools/svmrank/svm_classify $1 modelrank > $1.entities
# else
# echo "cannot classify clusters using *mysterious* model....."
# fi
echo "creating output....."
java MakeResponse $1
【问题讨论】:
-
cherrypicker.sh期望输入一个文件名,而不是一些文本。由于此脚本中使用的各种程序也需要一个文件名并且不能直接给出一些文本(特别是“java”),因此您首先需要创建一个包含您的文本的文件,然后将其传递给脚本。
标签: linux bash shell command-line