質問編集履歴

1 マークの訂正

anpapa

anpapa score 12

2017/10/30 17:52  投稿

シェルスクリプトを用いて、c言語で書かれたソースファイルをコンパイルし、実行したい
失礼な表現等ございましたら、申し訳ございません。
また、説明がわかりにくい所など御座いましたらお申し付けください。
```
.
├── do.sh
├── a350
│   ├── b110
│   │   ├── data.csv
│   │   └── test.c
│   ├── b115
│   │   ├── data.csv
│   │   └── test.c
│   └── b120
│   ├── data.csv
│   └── test.c
├── a375
│   ├── b110
│   │   ├── data.csv
│   │   └── test.c
│   ├── b115
│   │   ├── data.csv
│   │   └── test.c
│   └── b120
│   ├── data.csv
│   └── test.c
└── a400
├── b110
│   ├── data.csv
│   └── test.c
├── b115
│   ├── data.csv
│   └── test.c
└── b120
├── data.csv
└── test.c
```
上記の様な構造で、各ディレクトリに、「data.csv」を読み込み結果を出力する、c言語で書かれたソースファイル「test.c」が入っており、それぞれをコンパイルし、それぞれ同時に実行しようと思っています。
以下の様に、findを用いてシェルスクリプトにソースファイルのパスを渡して、シェルスクリプト内で、コンパイル及び実行したいと思っています。
```
find ./ -type f -name "test.c" -exec ./do.sh {} \;
```
シェルスクリプトの中身は以下の様になっています。
```sh
#!/bin/bash
PGM=$1
gcc $PGM
./a.out &
```
しかし、実行すると、それぞれのディレクトリにではなくシェルスクリプトが置いてあるディレクトリに、コンパイルした「a.out」が出力され、実行結果も出力されません。
おそらくシェルスクリプトに間違いがあるのでしょうが、エラーが出ないのでどこを直せば良いのかわかりません。もしよろしければ、どのようなシェルスクリプトを書けば良いのか教えていただけないでしょうか?
よろしくお願いします。
因みに、シェルスクリプトを用いずにコンパイルして、実行した場合、正しく結果が出力されます。
  • C

    5653 questions

    C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

  • CentOS

    3732 questions

    CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

  • sh

    415 questions

    shは、UNIX系OSのシェル操作の1つであり、最も基本的なシェルのことです。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る