• ベストアンサー
  • すぐに回答を!

#!/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 の下の行にコマンドをうつ方法を教えて頂きたいです。 質問の文に誤りや分かりずらい点がある場合があるとは思いますが よろしくお願いいたします。

共感・応援の気持ちを伝えよう!

  • 回答数1
  • 閲覧数1334
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • 回答No.1
  • anmochi
  • ベストアンサー率65% (1332/2045)

#!/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は基本的にコマンドラインに打ち込むものではありません。

共感・感謝の気持ちを伝えよう!

関連するQ&A

  • awkコマンドに引数を渡す方法

    awkコマンドに対して引数を渡す方法が知りたいです。 例えば以下のようなリストファイルがあったとします。 --------------------------------------- % cat test.lst 454 100 37536 200 32432 300 34q2 400 --------------------------------------- そこで以下のシェルを実行すると --------------------------------------- #!/bin/sh for VAL in 100 200 300 do CNT=`cat test.lst | awk '$2 == $VAL {print $1}'` echo "$VAL : $CNT" done --------------------------------------- awkコマンド内の$VALが引数ではなく文字列として認識されてしまうため、 出力結果が 100 : 200 : 300 : となってしまいます。 100 : 454 200 : 37536 300 : 32432 という結果を出力したい場合(awk内の引数を有効にする場合)どうすればよいでしょうか? awkを使用しない方法もあるかと思いますが、今回はawkを使った方法を知りたいです。 宜しくお願い致します。

  • grep -l '#!/bin/sh' * が動作しない

    FedoraCore4 bashで カレントディレクトリの複数の hoge.sh ファイルの中身に #!/bin/sh が書き込まれているファイルを調べる為に grep -l '#!/bin/sh' *.sh と実行すると期待通りに表示されました。 しかし、 grep -l '#!/bin/sh' * と実行したのですが次のプロンプトも表示されず止まってしまいました。 しかし、AIX5.2 bashでは grep -l '#!/bin/sh' * を実行すると正しく表示されました。 以下整理いたしました。 FedoraCore4 × grep -l '#!/bin/sh' * ○ grep -l '#!/bin/sh' *.sh AIX5.2 ○ grep -l '#!/bin/sh' * ○ grep -l '#!/bin/sh' *.sh 何故、動作の違いがあるのか教えて頂けないでしょうか。 よろしくお願い致します。

  • shはシェルなのかコマンドなのか?

    http://d.hatena.ne.jp/KishikawaKatsumi/20080504/1209922424 で $ sudo sh j2sdk-1_4_2_13-linux-i586-rpm.bin $ sudo rpm -ivh j2sdk-1_4_2_13-linux-i586.rpm と、shと打ち込むと最後の.binが消えますが、shは シェルなのか、それともコマンドなのかどちらなの でしょうか? 手元にあるlinuxの入門書には「shはシェルの一種である」 と記述があります。googleで検索をしてみましたが、 コマンドであるような記述もあり、混乱しております。 また、その入門書には「シェルを切り替えるには、コマンドライン でシェルの名前を入力します。exitコマンドで、元のシェル に戻ります」とあり、その文章の下には実際にshと打ち込んでexit で元に戻る様が書いてあるので実際に試してみました。 [root@localhost ~]# sh sh-3.2# exit exit [root@localhost ~]# この記述のせいでますますわからなくなりました。 なお、最後のbinがシェルスクリプトであることは理解して おります。 ご存じの方、ご教授頂ければ幸いです。何卒宜しくお願い申し 上げます。

  • バッチファイルにおけるコマンドの引数

    バッチファイルの中で曜日判定で処理内容を変えたいのですが DOSコマンドのdateでは曜日を出力できませんでした。 そこで、Services for UNIX 3.5をインストールし、UNIXのdateコマンドを使って曜日判定をしようとしたのですが、以下のようにエラーに なってしまいます。 ===バッチの中身== rem 曜日判定 set wk=c:\SFU\bin\date +%a IF %wk% EQU "日” call batch_1.bat  ・・・ ・・・ ====== 上記をコマンドプロンプトで実行しますと date: illegal time format usage: date [-u] [-r seconds] [+format] date [-u] -t [[[[[CC]yy]mm]dd]HH]MM[.SS] [+format] date [-u] [+format] mmddHHMM[yy] +aの使い方が誤っています。 ※ちなみコマンド単体で実行すると正常です。 c:\SFU\bin\date +%a 水

  • ASPからexeプログラムへ引数

    ASPの超初心者です。 IIS上のASPから WWWから変数での文字列を test.exeに、引数を与えて実行することは可能ですか? また、それを実行した結果をASPでWWWに表示させたいの ですが、可能ですか? よろしければ、簡単な方法や関数等を教えてくだされば 幸いです。 よろしくお願いします。

  • テーブルでEnterしても次の行の冒頭に移動しない

    エクセル2007挿入からデータ範囲をテーブルに設定すると Enterキーを押すと次の行の1列目に移動する、と 何かで読んだのですが 真下のセルにしか移動しません。 次の行のA列に移動するにはどうしたらいいですか? 別にテーブルでなくても次の行のA列に移動できれば何でもいいです ちなみにテーブル範囲はA~AL列 列によっては関数や入力規則が設定されている。 あまり入力されない(空白)列もある。 一番多いのはA~P列まで入力して次の行に移動するパターン。 途中列でEnterしても最終列まで行ってEnterしても下のセルにしか 移動できませんでした。

  • ワードで、行替えしても行枠を広げずに、次の行枠へ行ける方法

    ワードで、1行の文末で、行替えをすると、同じ枠内が広がって、次の行枠へ行けないで、困っています。 しても行枠を広げずに、次の行枠へ行ける方法を教えて下さい。  多分、ワードの表(罫線入り。左右は線が無く、便箋の横罫のみが均等に入っている。ダウンロードしたものに、行ごとに書き込むようになっている。) マウスで次の行の頭に、もって行けば、そこから書けるのだが、文書の終わりで、enterを押すと、同じ行内に、行が拡大して、書きこむようになる。行幅が不ぞろいになるのを防ぎたいのです。

  • chmodコマンドで、あるディレクトリ以下の"*.sh"ファイル全てに

    chmodコマンドで、あるディレクトリ以下の"*.sh"ファイル全てに実行権限を与える方法を教えてください。

  • シェルから引数を使用してsedコマンドを使用する方法

    テキストファイル内のAという文字を置き換えようと思っています。 シェルから引数渡しでsedコマンドを使用してやろうと思っているのですが、引数渡しの方法をご存知の方がいらっしゃいましたらご教授ください。 具体的には下記のようなことをしようとしております。 sample.txt --- ABC AABBC sample.txt内のAという文字を他の文字に置き換えようと思っています。 hoge.sh 1 として、Aを1に置き換えようと思っています。 hoge.shは、 #! /bin/csh sed -e 's/A/${1}/g' sample.txt >! sample2.txt として実行したところ、引数がうまく拾えず1に置換することができずに困っています。 よろしくお願いします。

  • 現在あるサーバー(Aサーバー)のcronで次のようなコマンドでperl

    現在あるサーバー(Aサーバー)のcronで次のようなコマンドでperlのスクリプトを動かしています。 cd /home/saarisa/www/; ./tools/runtask これを他のサーバー(Bサーバー)から動かしたいと思い下記のようなSHELLスクリプトをAサーバーに作ってそれを実行したいのですがこのSHELLスクリプトの実行方法がわかりません どうしたら実行できるのでしょうか? #!/bin/sh cd /home/saarisa/www/mt/; ./tools/run-periodic-tasks 1.BサーバーのCRONから実行 2.BサーバーのPHPから実行 3.HTMLからクリックして実行 4.BサーバーからAサーバーのPERLを直接実行 どの方法でもかまいません。 (AサーバーはPHPは動かず、Bサーバーはphpが動きます。) よろしくお願いします。