こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

MinGW,msysでCスクリプトの実行

windows上でCシェルスクリプトで書かれたファイルを実行する必要が生じました。
これまではcygwin上で難なくやっていたのですが、cygwinは大きいので、これをやめてMinGWにしたため、Cシェルスクリプトが流れなくて困っています。MinGW、msysにはCシェルは無いようです。そこで、MinGW,msys,minttyの環境下で以下のようにやってみたのですが、これでよいのでしょうか?

(1)MinGW,msys,minttyをインストール(Bシェルの環境ができる)
(2)tcsh.exeをwebからダウンロード(ftp://ftp.funet.fi/pub/unix/shells/tcsh/)
(3)tcsh.exeをmsysの/binに入れて、cshにハードリンクを張る(#ln tcsh.exe csh)

これで簡単なCシェルスクリプトは流れるようですが、そのCシェルスクリプトの中で、さらにスクリプトファイルを実行させるようなスクリプトはうまく流れません。結局、試行錯誤の結果、以下のように、csh,shを頭に付加してようやく流れるようになりました。

・元のファイル(script-a,bは流れない)
#!/bin/csh -f
...........
./script-a(Cシェル)
./script-b(Bシェル)
...........

・修正後(ようやく流れた)
#!/bin/csh -f
...........
csh ./script-a(Cシェル)
sh ./script-b(Bシェル)
...........

何故このようにしなければいけないのか?また、minttyでCシェルスクリプトを流す方法はこれでよいのか?(他に方法はないのか?)ご教示頂ければと思います。
当方、シェルスクリプトは全く素人で質問自体が的外れかもしれませんがよろしくお願いします。

投稿日時 - 2014-06-19 00:20:50

QNo.8644155

困ってます

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

> 「流れる」とは「支障なく実行できる」という意味です

そういうことではなくて。

「流れない」と言った場合に
・エラーメッセージが出て実行が停止する
から
・マシンルームが爆発炎上する
まで、ありとあらゆることが「流れない」に該当します。
その原因も
・単純な入力ミス
から
・カルト球団の呪い
まで、ありとあらゆる可能性があります。
# 「呪い」による「爆発」を最初に検討することは無いでしょうけど。

あなたの隣にいれば、直接動作を見たり、質問したりできますが、こういう場所ではそうもいきません。
何がどうなっているのか、具体的に書くようにしましょう。


> エラーメッセージは出ず、windowsにコントロールが移り、「ファイルを開くプログラムの選定」の画面が立ち上

こういう情報こそが必要なのです。

Windowsのコマンドプロンプト(CMD.EXE)から TEST.XLS 等と入力すると、 TEST.XLSをダブルクリックしたのと同等の動作をします。
それを考えると、あなたがシェルで実行しているつもりの何かが、実際にはWindowsのコマンドとして実行されている、と予想できます。

・「元のファイル」自体が、Windowsのバッチファイルとして実行されている
 sh,cshとシェルを指定すると動作することから、可能性はあります
・script-a, script-bが,Windowsのバッチファイルとして実行されてしまう
 sh,cshとシェルを指定すると動作することから、可能性はあります
 tcshがMinGWに対応していない可能性もあります。

あたりを確認してはどうでしょうか?

投稿日時 - 2014-06-19 19:57:02

ANo.1

> 流れない

とは、どんな状態なのでしょうか?
エラーメッセージ等は出ませんか?

投稿日時 - 2014-06-19 08:06:38

補足

「流れる」とは「支障なく実行できる」という意味です。計算機を使う業務に従事していますがよく使います。業界用語かも知れませんが。
本件の場合、(元のファイル)のケースでは、エラーメッセージは出ず、windowsにコントロールが移り、「ファイルを開くプログラムの選定」の画面が立ち上がり、処理が中断するようです。

投稿日時 - 2014-06-19 12:43:58

あなたにオススメの質問