Как ссылаться на Main только один раз в этой терминальной команде ubuntu: "javac Main.java && java Main"?

Я рассматриваю ряд различных Java-программ и пытаюсь понять, как я могу обновить ссылку на имя программы только один раз, а не дважды. Есть ли способ использовать переменную в одной терминальной команде?:S

Команда, которую я пытаюсь улучшить, имеет следующую форму: javac Main.java && java Main

Я хочу изменить ссылку на Main только один раз, вместо того, чтобы вводить ее дважды каждый раз.

3 ответа

Решение

Вы можете сделать это одной строкой:

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

Это будет работать, даже если у вас есть имя пакета, поскольку оно автоматически заменит / с . правильно построить полное имя вашего класса. В приведенном выше примере он скомпилирует класс com/mycompany/Main.java затем запустить com.mycompany.Main

ПК: Относится к относительному пути вашего класса без .java, это то, что вам нужно будет изменить

CN: Относится к полному квалифицированному имени вашего класса, автоматически созданному из предыдущего пути

Иногда самый простой подход - лучший. Похоже, у вас есть куча программ для компиляции и запуска. Я бы посоветовал вам поместить эти имена в текстовый файл, например так:

Main
Foo
Bar

а затем используйте поиск и замену в редакторе, чтобы сделать текст следующим образом:

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

| Затем просто выберите строки для запуска и вставьте их в терминал.

Конечно, это зависит от вашего ожидаемого рабочего процесса, но иногда самый простой - лучший.

Вы можете установить его как переменную окружения. Что-то вроде,

export CLS=Main # Change Main once
javac $CLS.java && java $CLS # Will use "Main"
Другие вопросы по тегам