Linux

【Linux】【bash】シェルから別プログラムを呼ぶ方法

シェルスクリプト(bash)から別ファイルのプログラムやソースを呼ぶ方法を紹介します。

シェルから別のシェルを呼ぶ

sample01.sh

#!/bin/sh
cd /***/****/      #(1)
./aaa.sh           #(2)
result=$?          #(3)
if["$result" -eq 0]
then
   echo "正常"   #(4)
else
   echo "異常"    #(4)
fi

ポイント

①:シェルがあるディレクトリまで移動
②:シェルの実行
③:終了ステータスを受取る。
④:終了ステータスをもとにif文でそれぞれの処理を行う。
※これをしないとすぐ「$?」が0に戻るので注意

 

シェルからjavaを呼ぶ

sample02.java

public class Test {
 public static void main(String[] args) {
       /* 
          何かのプログラム 
         */
      /* 処理結果を返す */
  System.out.println(result);
 }
}

sample02.sh

#!/bin/sh
java Test               #(1)
result=$?               #(2)
if [ "$result" -eq 0 ]
 then
   exit '正常'          #(3)
 else
   exit  '異常'         #(3)
fi

ポイント

①:javaの実行
②:終了ステータスを受取る。
③:終了ステータスをもとにif文でそれぞれの処理を行う。

 

シェルからWebシステムを呼ぶ

sample03.sh

#!/bin/sh
wget -O result.html "http://localhost/****/***.html"  #(1)
if [ -f 'result.html' ]    #(2)
then
 read code < 'result.html' #(3)
 rm result.html
   if [ "$code" -eq 0 ]
    then
      exit 0               #(4)
    else
      exit 1               #(4)
   fi
else
 exit 1                    #(4)
fi

ポイント

①:URLからWebシステムを呼び出す
 正常なら0異常なら1のみを記述したhtmlファイルを返す
 別にhtmlでなくてもwebであればphpでも、java(jsp)でも可
②:①で作られたhtmlファイル(result.html)の存在チェック
③:result.htmlの中身を変数codeへ代入
④:シェルを終了させ、終了ステータスをリターンコードとして返す。
0なら正常、1なら異常。

-Linux