sed コマンドで文字列編集
やっぱりコンパイルされてできあがるファイルの名前を"連番.bin"でなく、
"ファイル名.bin"にしたい、という気持ちからそれをするためのシェルを引き続き作成。
すでに配列の中にファイル名.cという名前が格納済みだからそれを利用する。
一番後ろの.cのみ取り除いてやればいい。配列の各要素が$VALUEであり、
>echo $VALUE
sample.c
という状況だったとして、
>echo $VALUE | sed -e "s/.c/\$//"
sample
という結果が得られる。sed コマンドの意味としては、変数の最後尾の.cを削除する、という意味になる。
sed のパラメータにはいくつか取り得る値がある。
今回の場合は、ファイル名の中に一度だけしか操作したい文字列 ".c" が含まれていないためあまり影響はないが、\$ 以外にも
1.sed -e "s/.c//"
2.sed -e "s/.c//g"
というようにもできる。
1のようにした場合は、一番最初にでてきた ".c" のみが置き換えられる。
2のようにした場合は、すべての ".c" が置き換えられる。
>echo $VALUE
sample.caaa.c
>echo $VALUE | sed -e "s/.c//"
sampleaaa.c
>echo $VALUE | sed -e "s/.c//g"
sampleaaa
>echo $VALUE | sed -e "s/.c\$//"
sample.caaa
という具合だ。これを利用して最終的に
i=0
while *1
do
CREATE_BIN_NAME=`echo $ARRAY[$i]} | sed -e "s/^/..\/bin\//" | sed -e "s/.c\$/.bin/"`
cc -o ${CREATE_BIN_NAME} ${ARRAY[$i]}
i=`expr $i + 1`
done
となった。これでほぼ完成だが、、、
*1: $i < $count