dポイントプレゼントキャンペーン実施中!

Linuxのシェルスクリプトでgccでコンパイルしたファイルを連番でコピーするスクリプトの書き方があれば教えて下さい。
連番とはgccでhoge1.cをコンパイルした後スクリプトを実行すればhoge1をコピーしたhoge2.cが出来上がるという意味です

A 回答 (2件)

実行するたびに、連番を1つずつずらすと言うことですかね。



#!/bin/bash
for((i=99999; i>0; i--))
do if test -f hoge$i.c
then mv hoge$i.c hoge$((i+1)).c
fi
done

mvするかcpするかはお好きに。
    • good
    • 0

「gccでコンパイル 」と「連番でコピー」の関連が無いように思えますが。



> hoge1をコピーしたhoge2.cが出来上がる

このhoge1は何でしょうか?
gccのコンパイルした結果でしょうか?それだと、 hoge2.cにコピーしてもCのソースコードにはなりません。
それとも、hoge1.cの間違いでしょうか?
それとも、コピーしたいのはコンパイルした結果の方でしょうか?

連番ファイルコピーの基本は次の通り
(1)ファイル名を、前半、数値、後半(拡張子)に分解
(2)前半、数値+1、後半(拡張子)を「新ファイル名」とする
(3) 「ファイル名」を「新ファイル名」にコピー

これに
(1)' 数値が無い場合→ 0とする/ エラーで終了させる
(2)' 新ファイルが既に存在する場合→ 更に+1していく/上書き/ エラーで終了させる
等といった異常時の処理があるとよいでしょう。

シェルスクリプトでもできますが、Perl,awk等を使った方が楽に書けると思います。


連番コピーをしたい理由が「過去の履歴を残しておきたい」ということなら、cvs,subversion,git等のバージョン管理ツールを使うことも検討してはいかがでしょうか?

この回答への補足

>このhoge1は何でしょうか?
hoge1.cのことです。
$ gcc hoge1.c
$ . hoge_script
$emacs hoge2.c ←これでhoge1.cをコピーしたhoge2.cが開ける

といった感じでやりたいのですが実際のソースコードから教えて欲しいです。Perlでもいいです

補足日時:2013/03/07 13:18
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!