◆実現したいこと
シェルを実行時に引数を渡し、それをjavaで受け取り処理したい。
◆前提
・シェル内はソースを中身を確認できませんでしたが、値が渡せるのは確実らしい。(すみません)
・methodクラスの中身を変更することはNG。
・今回一部新たに実装したいからカスタマイズしている。
・シェルは「sh Start.sh 001」という感じで実行します。
◆考えたこと
・mainBatch()は継承しないといけないので、mainBatch()内から引数有のmainBatch(引数)を呼び出す。
◆ソース
java
1public abstract class method throws Exception { 2 3 public void start() { 4 try { 5 initBatch(); 6 mainBatch(); 7 } cath (Exception e) { 8 e.printStackTrace(); 9 } 10 11 } 12 13protected abstract void initBatch() throws Exception; 14 protected abstract void mainBatch() throws Exception; 15 16}
java
1public class mainMethod extends method { 2 3 @Override 4 protected void initBatch() throws Exception { 5 //継承しているので仕方なく実装。 6 //ここで引数ありのmainBatchメソッド(引数有)呼出をしたい 7 8 } 9 10 @Override 11 protected void mainBatch() throws Exception { 12 //継承しているので仕方なく実装。 13 //ここで引数ありのmainBatchメソッド(引数有)呼出をしたい 14 15 } 16 17 //このメソッドでバッチからの引数を受け取る想定 18 public void mainBatch(String args[]) throws Exception { 19 20 String word = args[0] 21 22 if(word == null || word.isEmpty()) { 23 System.out.println("空です。") 24 } else { 25 System.out.println("シェルから渡された引数は" + word + "です。"); 26 } 27 28 } 29}
◆備考
今回考えた方法はこの通りなのですが、他に実装方法があれば教えていただけたらと思います。
◆追記
今回shの中身が分からないということで、設定ファイルから値を取得して変数に格納する方法をとりました。