2013-07-29 147 views
0

比方說,我在命令行運行腳本:如何從命令行將變量傳遞給腳本?

coffee ./scripts/doSomeStuff.coffee 

其中doSomeStuff.coffee樣子:

numberOfTimes = ??? 

doStuff = (times) -> 
    while times > 0 
    console.log('doing stuff') 
    --times 

doStuff(numberOfTimes) 

我如何可以傳遞的次數經做的東西命令行? --eval似乎是明顯的選擇,但添加--eval='global.numberOfTimes=5'沒有幫助。

我可以用bash中的export REPEAT_TIMES=5做到這一點,但這似乎充滿了潛在的副作用。

回答

2

你的Node.js做同樣的方式,通過process.argv

http://nodejs.org/docs/latest/api/process.html#process_process_argv

命令:

coffee ./scripts/doSomeStuff.coffee 5 

的CoffeeScript:

numberOfTimes = process.argv[2] 
# index 0 is the interpreter: coffee 
# index 1 is the file: ./scripts/doSomeStuff.coffee 
# index 2 is the first argument: 5 

還有的npm modules大量提供更好的接口解析argv。我自己和optimist玩得很開心。

+0

啊,編輯得到它,謝謝 – jcollum

+0

PLease不插入代碼到其他人的答案。我不想看起來像我建議你設置默認的方式,因爲這是相當複雜的。這應該很簡單:'numberOfTimes = process.argv [2]? 1' –

+0

你說得對,我還沒有運行該代碼,忘記了更簡單的方法。我認爲補充說明會做出更完整的回答,所以我添加了它。 – jcollum

相關問題