我在终端中执行这样的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
答案 0 :(得分:2)
1)&gt;和2>分别操作标准输出和标准错误流重定向,因此输出进入$ 1.pos并将错误重定向到/ dev / null(丢弃)
2)如果要将文件内容作为输入提供,则可以将文件重定向为输入,例如:
tools/pos/pos.sh tools/pos < $1 > $1.pos 2> /dev/null
或通过管道:
cat $1 | tools/pos/pos.sh tools/pos > $1.pos 2> /dev/null
3)如果你想把文件内容作为参数(我希望input.txt只是一行),那么试试这个:
tools/pos/pos.sh tools/pos `cat $1` > $1.pos 2> /dev/null
或者您可以尝试xargs每行执行一次命令:
cat $1 | xargs -I myargs tools/pos/pos.sh tools/pos myargs >> $1.pos 2> /dev/null
此处&gt;&gt;表示标准输出附加到同一文件。
答案 1 :(得分:2)
<强>命令:强>
tools/pos/pos.sh tools/pos $1 > $1.pos 2> /dev/null
<强> 说明: 强>
tools/pos/pos.sh - script
tools/pos - Positional argument 1 for pos.sh
$1 - Positional argument 2 for pos.sh
$1.pos - Is a file which will hold the standard output of pos.sh
/dev/null - is a null file which will hold standard error
在这种情况下,工具/ pos / pos.sh采用两个postional参数tools/pos
&amp; $1(input.txt)
完成其工作
并将tools/pos/pos.sh
的标准输出重定向到文件$1.pos(input.txt.pos)
,命令的> $1.pos
部分执行此操作并
上述命令的2> /dev/null
部分将标准错误重定向到/dev/null