.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" の前にあります

見事に標準出力にも回せる。標準入力も開きたいと思ったが用事があるときにしよう。