Как ссылаться на 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"