シバンラインで使用できるスクリプトインタープリターをシェルで実装しようとしています。たとえば、これが私のインタプリタとそのインタプリタを使用したテストスクリプトです。
-----
$ cat interp
#! /usr/bin/env bash
printf "interp called with args: %s\n" "$*"
-----
$ cat test
#! ./interp
printf "test script!\n"
./test
Linuxシステムで実行すると、interp
期待する引数で呼び出されます。
$ ./test -a
interp called with args: ./test -a
しかし、Mac OS X 10.8.4で同じことをすると、次の結果が得られます。
$ ./test -a
test script!
test
スクリプトの内容は、ファイルを最初の引数としてinterp
実行されるスクリプトではなく、bashによって実行されtest
ます。
私はこれを正しく行っていますか?そのようなことはMac OS Xでは機能しませんか?それとも、これを達成するためのより良い方法はありますか?
はい、OSXで動作させる方法があります。これは、最初のスクリプトで行ったのと同じです/usr/bin/env
。つまり、を使用します。
次のように持っ./test
ています:
#!/usr/bin/env ./interp
printf "test script!\n"
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加