2016-06-10 14 views
2

Ich überprüfe eine Reihe von verschiedenen Java-Programmen und versuche herauszufinden, wie ich den Verweis auf den Programmnamen nur einmal anstelle von zweimal aktualisieren kann. Gibt es eine Möglichkeit, eine Variable in einem einzigen Terminalbefehl zu verwenden? : SWie man Main nur einmal in diesem ubuntu-Terminal-Befehl referenziert: "javac Main.java && java Main"?

Der Befehl I ist von dieser Form zu verbessern, bin versucht: javac Main.java && java Main

Ich möchte nur einmal den Verweis auf Haupt ändern, anstatt zweimal es jedes Mal einzutippen.

+0

Erstellen Sie ein Shell-Skript (sagen Sie compileandrun.sh) wie folgt 'javac $ 1.java && java $ 1'. Dann rufe es mit 'compileandrun Main' auf. Sie können dann dasselbe mit Main2 tun, indem Sie 'compileandrun Main2' ausführen. – jr593

+0

Sie können auch einen * builder * wie maven verwenden. Wie auch immer, das ist der Weg zu gehen, sobald Sie nicht triviale Programme haben. Dann ist der Befehl nur "mvn run" und maven weiß, was kompiliert werden muss (führt eventuell Tests aus) und führt das frisch erstellte ausführbare jar aus. –

+0

Vielen Dank für Ihre Antworten. Sehr geschätzt. –

Antwort

1

Sie können es so mit einer Zeile tun:

PC=com/mycompany/Main && CN=$(echo $PC | tr/.) && javac $PC.java && java $CN 

Dies funktioniert auch, wenn Sie einen Paketnamen haben, da es automatisch / mit . ersetzen wird richtig die volle zu bauen qualifizierter Name Ihrer Klasse In dem obigen Beispiel es die Klasse kompiliert com/mycompany/Main.java dann com.mycompany.Main

PC starten: Bezieht sich auf die: Bezieht sich auf den relativen Pfad der Klasse ohne .java, das, was Sie

CN sich ändern müssen Vollqualifizierter Name Ihrer Klasse wird automatisch aus dem vorherigen Pfad erstellt

+0

Das funktioniert genau so, wie ich es mir erhofft hatte, und fragte. Ich denke, ich sollte die Shell-Skript-Idee @ jr593 vorgeschlagen erkunden, aber das ist sicherlich, was ich versuchte zu tun. –

1

Sie könnten es als Umgebungsvariable festlegen. So etwas wie,

export CLS=Main # Change Main once 
javac $CLS.java && java $CLS # Will use "Main" 
1

Manchmal ist der einfachste Ansatz am besten. Es klingt, als hättest du eine Menge Programme zum Kompilieren und Ausführen. Ich würde Sie diese Namen in eine Text Datei setzen vorschlagen, wie folgt aus:

Main 
Foo 
Bar 

und dann einige Suche verwenden und im Editor ersetzen, um den Text wie folgt zu machen:

javac Main.java && java Main 
javac Foo.java && java Foo 
javac Bar.java && java Bar 

| Dann einfach Wählen Sie die auszuführenden Zeilen aus und fügen Sie sie in das Terminal ein.

Natürlich hängt es von Ihrem erwarteten Workflow ab, aber manchmal ist das Einfachste das Beste.