失礼な表現等ございましたら、申し訳ございません。
また、説明がわかりにくい所など御座いましたらお申し付けください。
. ├── 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
1#!/bin/bash 2 3PGM=$1 4 5gcc $PGM 6./a.out &
しかし、実行すると、それぞれのディレクトリにではなくシェルスクリプトが置いてあるディレクトリに、コンパイルした「a.out」が出力され、実行結果も出力されません。
おそらくシェルスクリプトに間違いがあるのでしょうが、エラーが出ないのでどこを直せば良いのかわかりません。もしよろしければ、どのようなシェルスクリプトを書けば良いのか教えていただけないでしょうか?
よろしくお願いします。
因みに、シェルスクリプトを用いずにコンパイルして、実行した場合、正しく結果が出力されます。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/10/30 09:01
2017/10/30 09:20