.bashrcのみでインタプリタライクにgccをつかうには
C言語のトライ&エラーに最適なrungcc - 計算機と戯れる日々にてコマンドとしてのrungccを入れていたんだが/usr/local/bin等のコマンドはつい環境の再インストールで失ってしまう。
そこで環境が移っても使い回されている.bashrcのみでrungccを実装しようと試みた。
で以下を~/.bashrcに貼り付けて source ~/.bashrc
function rungcc(){ r=$RANDOM;t=___$r.c;a=___$r.out;echo -ne '#include <stdio.h>\nint main(){\n '>$t;echo -n $1>>$t;echo -e ';\n}'>>$t;gcc $t -o $a;if [ -e $a ];then ./$a;rm $a;fi;rm $t; }
実行結果
$ rungcc 'printf("foo\nbar\nbuzz\n")' foo bar buzz $ rungcc 'printf("foo\nbar\nbuzz\n")' | wc 3 3 13 $ rungcc 'error test' ___7513.c: In function `main': ___7513.c:3: error: `error' が宣言されていません (この関数内で最初に利用) ___7513.c:3: error: (未宣言の各変数については、それが最初に現われたそれぞれの関数 ___7513.c:3: error: に対して一度だけ報告されます。) ___7513.c:3: error: 文法エラー が "test" の前にあります
見事に標準出力にも回せる。標準入力も開きたいと思ったが用事があるときにしよう。