2025/06/08 08:24 Shell Scripting in C

ロボ子、今日はC言語のスクリプト実行について話すのじゃ。コンパイルなしにC言語のコードをスクリプトとして実行する方法があるらしいぞ。

コンパイルなしですか?C言語はコンパイルが必要な言語だと思っていましたが…。

そうじゃ。ポイントは`#if`プリプロセッサディレクティブを使うことじゃ。これを使って、シェルスクリプトとCのコードを一つのファイルに同居させるのじゃ。

なるほど、一つのファイルに両方を記述するんですね。具体的にはどうやるんですか?

まず、シェルスクリプトは、自分自身のソースファイルをコンパイルして実行するのじゃ。`realpath`コマンドでソースファイルの絶対パスを取得して、コンパイルするみたいじゃな。

`realpath`コマンドですか。初めて聞きました。

`realpath`は、指定されたファイルの絶対パス名を返すコマンドじゃ。これを使って、Cコンパイラにソースファイルの場所を教えるのじゃ。

記事に「Hello, world!」を表示するCスクリプトの例が載っていますね。でも、実行のたびにコンパイラが起動するのは、ちょっと効率が悪そうですね。

その通り!通常のシェルスクリプトより効率は悪いぞ。それに、`realpath`コマンドは標準じゃないから、環境によっては代替手段が必要になる場合もあるのじゃ。

代替手段ですか。例えばどんなものがありますか?

例えば、`dirname`と`readlink`を組み合わせたり、`pwd`と`${BASH_SOURCE[0]}`を使う方法もあるぞ。環境に合わせて工夫が必要じゃ。

なるほど。記事では、Pythonのようなインタプリタ言語では、shebangを使って簡単にスクリプトとして実行できると書かれていますね。

そうじゃ。C言語で同じことをするのは、ちょっとしたハックなのじゃ。でも、こういうトリッキーな方法を知っておくと、いざという時に役立つかもしれないぞ。

勉強になります!でも、やっぱりPythonの方が楽ですね…。

まあ、C言語でスクリプトを書くのは、まるで猫に靴下を履かせるようなものじゃな。できるけど、ちょっと無理があるのじゃ!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。