Cygwin - バッチファイルからシェルを呼び出す!
Updated:
Windows 上で動く Unix ライクな環境 Cygwin で作成したシェルスクリプトを Windows 側のバッチファイルから呼び出す方法のメモです。 ※Cygwin 側のシェルスクリプトから Windows 側のバッチファイルを呼び出す方法ではありません。
作業記録
0. 前提条件
作業した環境は Windows XP SP3 + Cygwin 1.7.9 です。 呼び出す、Cygwin 側のシェルスクリプトは、ユーザルートに配置した “hoge.sh” とします。 今回はシェルスクリプトを呼び出していますが、呼び出すものは何でもよいです。
1. バッチファイル記述方法
以下のように、”bash.exe” の置いているフォルダへ移動して、実行したいコマンドをオプション指定すればよいです。 bash のオプション “–login” は Cygwin にログインし、”-i” はインタラクティブモード、”-c” は後ろのコマンドを実行します。 “-c” より前までは既存の “cygwin.bat” と同じ内容、”-c” 以後が追加した部分です。
C:
CD C:\cygwin\bin
bash --login -i -c "./hoge.sh"
2. bash のオプション
参考までに、bash コマンドのオプションはヘルプによると以下の通りです。
$ bash --help
GNU bash, version 4.1.10(4)-release-(i686-pc-cygwin)
使用方法: bash [GNU 長いオプション] [オプション] ...
bash [GNU 長いオプション] [オプション] スクリプトファイル ...
GNU 長いオプション:
--debug
--debugger
--dump-po-strings
--dump-strings
--help
--init-file
--login
--noediting
--noprofile
--norc
--posix
--protected
--rcfile
--restricted
--verbose
--version
シェル オプション:
-irsD or -c command or -O shopt_option (invocation only)
-abefhkmnptuvxBCHP 又は -o オプション
シェルオプションの詳細については `bash -c "help set"'と入力.
組み込みコマンドについては `bash -c help'と入力 .
Use the `bashbug' command to report bugs.
2. その他
シェルスクリプトに exit 値を指定して終了するようにしておけば、バッチ側でリターンコード(ERRORLEVEL)を取得することも可能なので、エラー処理等に利用できます。
Cygwin ユーザには常識的な内容のお話でした。 当方はこの方法を応用して Cygwin 上の Ruby スクリプトを実行するようなバッチファイルを作成し、タスクで定時起動させています。
以上です。
Comments