2

私の質問は解読するのがかなり難しいと思います(自由に完成させてください)。しかし、これはスクリプト (特にこの場合は JavaScript) でのシバン行の使用に関連しています。phantomjsこのスクリプトがあるとしましょう:

#!/usr/bin/env phantomjs

/*
Requires phantomjs to be installed (e.g. via Homebrew on Mac)

Example URL:
http://code.google.com/p/phantomjs/wiki/QuickStart#DOM_Manipulation
*/

var page = require('webpage').create(),
    url = 'http://lite.yelp.com/search?find_desc=pizza&find_loc=94040&find_submit=Search';

page.open(url, function (status) {
    if (status !== 'success') {
        console.log('Unable to access network');
    } else {
        var results = page.evaluate(function() {
            var list = document.querySelectorAll('span.address'), pizza = [], i;
            for (i = 0; i < list.length; i++) {
                pizza.push(list[i].innerText);
            }
            return pizza;
        });
        console.log(results.join('\n'));
    }
    phantom.exit();
});

これは非常にばかげた質問だと思いますが、

上記のコードのようなシバン行を保持できるようにする可能なトリックはありますか?(この場合)スクリプト実行の前にプレフィックスを付けずにファイルを実行できphantomjs、JavaScriptでエラーなしで解釈できますか? ?

そうでない場合、シバン行を「受け入れる」他の言語インタープリター (Ruby、Python など) はありますか?

4

2 に答える 2

4

Node.js 、シバン行が存在する場合は無視し、それを処理するためのインタープリターの特別な例外です。Javascript はコメントに#を使用しないため、PhantomJS もそのようなサポートを追加する必要があります。

ただし、PhantomJS を使用していない場合は、Node.js の Zombie ライブラリをいつでも使用して、サンプル コードで行っているのと同じことを行うことができます。

于 2012-06-08T00:29:11.550 に答える
2

最初の質問に対する答えはわかりませんが、2 番目の質問に対する答えは「はい」です。たとえば、Racketでは次のスクリプトを使用できます。

#! /usr/bin/env racket
#lang racket
"Hello, world!"

#!は行コメントとして無視されるため。

于 2012-06-08T00:17:46.847 に答える