私にファイルがあるとします。こんにちは:
#!/bin/sh
echo "Hello World!"
ファイルに実行可能ビットが設定されている場合は、プロンプトでそのパスを入力して実行できます。
$ ./hello
Hello World!
上記と同じ内容がより明示的に表示されますか?似ている:
$ execute hello
私は合格できることを知っていますこんにちは引数として使用します/bin/sh
が、shebang行で指定されたインタプリタを自動的に使用するソリューションを探しています。
私のユースケースは、実行可能フラグを設定せずにスクリプトファイルを実行することです。これらのファイルはgitリポジトリに保存されるため、実行可能フラグを設定したり、最初に別の場所にコピーする必要はありません。
答え1
答え2
次のPerl5スクリプトにはエラーチェックがなく、hashbang行をつかみ、それを呼び出して引数として渡されたスクリプトを実行します。 (ilkkachuの説明に基づいて単純化と圧縮)ファイル全体を読み取らないように...
open FH, ("<",$ARGV[0])
$line = <FH>;
close FH;
if ($line =~ /^\#\!(.*)/) {
$engine = $1;
exec("$engine $ARGV[0]");
}