Python有這個方便構建體:我可以告訴R腳本是否在littler下運行?
def do_stuff():
whatever
if __name__ == "__main__":
do_stuff(()
使得如果文件是從與python foo.py
或./foo.py
和適當shebang行的命令行運行,則__name__
變量被設置爲__main__
和文件運行作爲腳本。但是,您也可以從交互式shell或其他Python代碼執行from foo import do_stuff
,然後從那裏運行do_stuff
。然後,相同的腳本文件將充當模塊而不是腳本。
我可以在littler
腳本中做類似的事嗎?喜歡的東西foo.R
之中:
#!/bin/env r
do_stuff = function(){
whatever
}
if(?run as r command_line?){
do_stuff()
}
然後,我可以source("foo.R")
這將定義do_stuff
(在我的默認全局環境,但我們會掩蓋了,對於一個位)。
一個可能的關鍵是在littler
(設置爲腳本名稱)下運行時在環境中存在_
,但稍微強一點可能會更好。
從http://dirk.eddelbuettel.com/code/littler/README:*「利特勒通過指定腳本參數的‘ARGV’矢量提供了方便和把它放到全球環境中,這是一個慣例,其次是其他流行的腳本語言。'*。也許你可以檢查'argv'的存在嗎? – Andrie 2014-10-09 12:03:15