2016-02-15 90 views
-1

不来我有一个bash文件:退出代码中的Bash

REPOS="$1" 
TXN="$2" 

SVNLOOK=/usr/bin/svnlook 
LOGMSG=$($SVNLOOK log -t "$TXN" "$REPOS" | grep "[a-zA-Z0-9]") 

echo "\n$LOGMSG" >> /dev/tty 

javac ~/Desktop/SomeClass.java 
java ~/Desktop/SomeClass $LOGMSG 

STATUS=$? 
echo "\n" >> /dev/tty 
echo $STATUS >> /dev/tty 

exit 0 

调用该Java文件:

public class SomeClass { 

    public static void main(String[] args) { 
     String result = ""; 
     for (String s: args) { 
      result = result + " " + s; 

     } 

     String regex = ".*\\bHello\\b.*"; 

     if(result.matches(regex)) { 
      System.out.println("It matches"); 
      System.exit(0); 
     } else { 
      System.out.println("It does not match"); 
      System.exit(42); 
     } 
    } 
} 

我从来没有在Java文件已经退出,退出代码1。但是,当我在bash文件中回显状态时,它总是显示我'1'。背后的原因是什么?

+2

很确定'Someclass'是一个错字(小C);另外,这不是您为Java指定类的方式(您需要完全限定的*类名*,而不是路径;也可能是类路径)。 –

+0

它适合我!我在我的shell中得到了退出代码42 .... – Joda

+0

这不是我的问题 –

回答

1

错误代码是因为Java无法启动。您没有指定要正确运行的类。

如果非要设在我的桌面目录中的一类,我需要使用下面从另一个目录中运行它:

java -cp ~/Desktop SomeClass 

假设SomeClass没有指定的包。如果你有package org.foo.bar;在文件的顶部,你需要使用

java -cp ~/Desktop org.foo.bar.SomeClass