2016-04-21 28 views
0

時,我有這通常起始於Node.js的可執行腳本:條件語句初始化腳本的Node.js

#!/usr/bin/env node 

var ... 

爲了使用命令行參數--use_strict對Node.js的二進制文件,我需要將其更改爲

#!/usr/bin/env node --use_strict 

這可能會讓其他人感到困擾。

有沒有辦法在調用腳本時檢查是否提供了--use_strict,然後將它傳遞給可執行節點?

./myscript --use_strict 
--- 
if --use_strict 
    #!/usr/bin/env node --use_strict 
else 
    #!/usr/bin/env node 
+1

這些不是bash腳本。他們是'節點'腳本。而且你實際上不能保證'#!/ usr/bin/env節點--use-strict'甚至可以工作。 (不支持多個參數的支持。)是不是可以在腳本中設置'--use-strict'? –

+1

'#!'必須是腳本的前兩個字符,不能將它們放在其他任何地方,而不要將它們僅僅作爲註釋。爲什麼不從一個bash腳本那樣做if語句?您可以像從命令行一樣運行'node'腳本。 – cdarke

+0

@EtanReisner的權利。不,我不能在腳本中設置它,它是一個公共npm模塊。我現在看到的唯一解決方案是分解它。 – Patrick

回答

0

#!/usr/bin/env node將指示操作系統上的文件#!(「認領」)後調用命令。如果你的腳本文件your-node-script中,操作系統基本上運行此:

/usr/bin/env node your-node-script 

env命令將搜索環境中的第一個參數,並與其餘的參數執行它。如果您node可執行文件在/usr/bin/node,您的系統上,它會調用:

/usr/bin/node your-node-script 

解決你的問題,你只寫一個包裝腳本,做同樣打電話給你的節點腳本:

#!/bin/bash 
/usr/bin/env node --use-strict your-node-script "[email protected]" 

或:

#!/bin/bash 
/usr/bin/node --use-strict your-node-script "[email protected]" 

(僅適用於系統中node acrually是/usr/bin


編輯:參數現在轉發(感謝伊坦賴斯納)。

+0

這裏的包裝器腳本不會將參數轉發給節點腳本。 (這可能也可能不重要,但是爲了通用性,應該包含在包裝腳本中。) –