Вот проблема, которую вы видите:
$ cat compile.sh
javac Main.java
$ bash compile.sh
javac: invalid flag: Main.java
Usage: javac <options> <source files>
use -help for a list of possible options
Это происходит потому, что в скрипте используются окончания строк в стиле DOS:
$ cat -v compile.sh
javac Main.java^M
Вы можете исправить это, установив в своем редакторе сохранение с помощью разделителей строки Unix или, например, с помощью. tr
$ tr -d '\r' < compile.sh > fixed.sh
(no output)
$ cat -v fixed.sh
javac Main.java
Теперь он работает как положено:
$ bash fixed.sh
(no output)