有人可以帮我检查我的bash脚本吗?我正在尝试将.txt文件的目录提供给斯坦福解析器(http://nlp.stanford.edu/software/pos-tagger-faq.shtml),但我无法使其正常工作。我正在使用Ubuntu 10.10

循环正在工作,并使用以下命令读取正确的文件:

#!/bin/bash -x
cd $HOME/path/to
for file in 'dir -d *'
do
#       $HOME/chinesesegmenter-2006-05-11/segment.sh ctb $file UTF-8
        echo $file
done


但随着

#!/bin/bash -x
cd $HOME/yoursing/sentseg_zh
for file in 'dir -d *'
do
#       echo $file
        $HOME/chinesesegmenter-2006-05-11/segment.sh ctb $file UTF-8
done


我收到此错误:

alvas@ikoma:~/chinesesegmenter-2006-05-11$ bash segchi.sh
Standard: CTB
File: dir
Encoding: -d
-------------------------------
Exception in thread "main" java.lang.NoClassDefFoundError: edu/stanford/nlp/ie/crf/CRFClassifier
Caused by: java.lang.ClassNotFoundException: edu.stanford.nlp.ie.crf.CRFClassifier
    at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
Could not find the main class: edu.stanford.nlp.ie.crf.CRFClassifier. Program will exit.


以下命令有效:

~/chinesesegmenter-2006-05-11/segment.sh ctb ~/path/to/input.txt UTF-8


并输出

alvas@ikoma:~/chinesesegmenter-2006-05-11$ ./segment.sh ctb ~/path/to/input.txt UTF-8
Standard: CTB
File: /home/alvas/path/to/input.txt
Encoding: UTF-8
-------------------------------
Loading classifier from data/ctb.gz...done [1.5 sec].
Using ChineseSegmenterFeatureFactory
Reading data using CTBSegDocumentReader
Sequence tagging 7 documents
如果 您 在 新加坡 只 能 前往 一 间 俱乐部 , 祖卡 酒吧 必然 是 您 的 不二 选择 。


作为或许是新加坡唯一一家国际知名度的夜店,祖卡既是一个公共机构,也就是狮城年轻人选择进行成人礼等庆祝的不二场所。

最佳答案

您可以尝试:

for file in *
do
    $HOME/segment.sh ctb "$file" UTF-8
done


因此,有几件事需要纠正:


在for语句后不要使用:,请使用;或换行符
"$file"对象周围加上引号,以允许文件名中包含空格
如果要使用放置'dir -d *'的命令,则应使用$(dir -d *)或角引号而不是``

08-04 13:12