我想我的问题很难破译(随意完善它)。但它涉及在脚本中使用shebang行 - 特别是在这种情况下,JavaScripts。假设我有这个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();
});
我怀疑这是一个非常荒谬的问题,但是:
是否有任何可能的技巧可以让你保留一个shebang行,例如上面的代码 - 这样你就可以执行文件而不需要在脚本执行前加上(在这种情况下)phantomjs
- 和仍然在JavaScript中解释没有错误?
如果没有,是否有其他语言解释器(例如Ruby,Python)“接受”shebang行,或者更好的是,有办法忽略它们吗?
答案 0 :(得分:4)
Node.js 确实忽略shebang行(如果存在),并且在他们的解释器中处理它是一个特殊的例外。 PhantomJS也必须添加这样的支持,因为Javascript不会使用#来发表评论。
如果你没有加入PhantomJS,你可以随时使用Zombie library for Node.js并完成你在示例代码中所做的事情。
答案 1 :(得分:2)
我不知道你的第一个问题的答案,但答案对你的第二个问题是肯定的。例如,Racket允许以下脚本:
#! /usr/bin/env racket
#lang racket
"Hello, world!"
由于#!
被忽略为行注释。