Seu roteiro está OK. É o terminador de linha fazendo com que ele não funcione, provavelmente. Você pode verificar o terminador de linha com
file YourScriptFile
Se ele retornar algo como "... com terminadores de linha CRLF", você poderá alterar o terminador de linha CRLF para LF usando
flip -u YourScriptFile
Execute o arquivo de script novamente.
P.S. Existe uma solução rápida e suja para o seu problema
cut -d $'\n' -s -f ${num},$((num+5))-$((num+max)) $javaFile
-d $ '\ n' significa que estamos usando \ n como delimitador e -f $ {num}, $ ((num + 5)) - $ ((num + max)) significa os campos (nesta situação , linhas) que você quer. campos são uma lista, que pode ser 1-3, 1,3-10 etc.