質問: !/bin/sh の次の行から複数のコマンド(./a.exe 引数) #!/bin/sh の次の行から複数のコマンド(./a.exe 引数)を入力して、実行する方法。 私はwindows上でcygwinを使用し、c言語のプログラミングを作成しています。 引数を1個つかったプログラムのファイル s.c があります。 #!/bin/sh の下にコマンドをいくつか並べ #!/bin/sh a.exe 0 a.exe 1 (←0,1,2は引数) a.exe 2 ... ↑のような形にして、1度に引数が0,1,2のそれぞれの時の実行結果をだしたいのですが どうすれば #!/bin/shの次の行にコマンドをうてるのでしょうか? 私の場合、まず $ cc s.c で「enter」キーを押して次に $ #!/bin/sh とうつのですが、この下の行に文字をうつ方法が分らず 「enter」キーを押して次に $ ./a.exe 0 とうちます。 そうすると、引数が0のときの実行結果はでてきますが 私がやりたいように ./a.exe 0 ./a.exe 1 ./a.exe 2... の実行結果がいっぺんにだすことはできません。 $ #!/bin/sh の下の行にコマンドをうつ方法を教えて頂きたいです。 質問の文に誤りや分かりずらい点がある場合があるとは思いますが よろしくお願いいたします。
回答: #!/bin/sh というのは、いわゆるシェルスクリプトと呼ばれるもののための仕組みで、テキストファイルの先頭にあらかじめ入力しておくものです。今回の例で言えば ~~~run_a~~~ #!/bin/sh a.exe 0 a.exe 1 a.exe 2 ~~~~~~~ などというテキストファイル「run_a」を用意しておき、s.cをコンパイルしてa.exeを作った後でrun_aを実行する事になります。#!/bin/shの次の行にcc s.cを入れておいてコンパイルも同時に行われるようにしておいても良いでしょう。cygwinの場合実行属性をつけておかなくてはいけないかどうかは私は知りませんので調べてみてください。 応用編として、この場合、a.exeのコマンドライン引数はあらかじめrun_aに入力しておく固定値になりますので、$1なるシェル変数やshiftなるシェル関数を用いてrun_aの引数分a.exeを繰り返し実行するようにしておくとrun_aを便利に使う事ができるでしょう。 繰り返しますが、#!/bin/shは基本的にコマンドラインに打ち込むものではありません。