2013-06-23 176 views
11

我發現了一個(可能過時和不正確)blog post from 2004,它聲稱從命令行運行Smalltalk腳本是不可能的。從那以後有什麼改變了,是否可以從命令行運行Smalltalk腳本?我做了很多谷歌搜索,並且根本沒有發現關於這個主題的信息。是否可以從命令行運行Smalltalk腳本?

有沒有辦法將Smalltalk腳本(比如這個)保存爲一個文件,然後從命令行運行腳本?

Transcript show: 'This should be printed to the standard output.' printString; cr. 
+1

你正在使用哪種小竅門? Pharo的Coral http://rmod.lille.inria.fr/coral/ – msandiford

+0

@msandiford我使用的是GST Smalltalk,但我也可以使用Pharo,這取決於GNU Smalltalk之間是否存在任何語法差異和Pharo。 (實際上,我甚至不確定每個Smalltalk實現之間是否存在重要的語法差異)。 –

+0

@msandiford另外,我仍然不理解生成Coral shell腳本的說明。根據[入門指南](http://rmod.lille.inria.fr/coral/getting-started.html),我應該「在生成腳本之前將這些文件放在正確的位置」,但該指南不會不解釋把文​​件放在哪裏。 –

回答

11

Pharo有不俗的支持命令行和一個簡單的腳本zeroconf安裝它:

curl get.pharo.org | bash 
./pharo Pharo.image --help 
./pharo Pharo.image eval "1+2" 

我們對我們的ci servers使用這些工具定期。

新的命令行句柄可以通過子類別輕鬆安裝。 您會發現部分文檔here

Coral針對更復雜的接口並支持複雜的參數解析。 Pharo附帶的默認命令行工具遵循相當簡單的方法,您必須手動檢查和處理參數。

+0

您引用的文檔顯示了使用帶'eval'的'stdin',例如'echo「1 + 2」| $ PHARO_VM my.image eval'。使用Pharo 6.1,它不能在Ubuntu 17下運行(命令掛起)。它使用表達式作爲參數傳入。我試圖找到一種方法來從文件中評估任意腳本,例如'cat myScript | ...'而不需要在圖像中定義命令處理程序(子類化等)。 – Fuhrmanator

+0

好的,我使用'st'命令重新命名我的腳本'myScript.st'。那就是'./pharo Pharo.image st myScript.st'正在使用任意的Pharo命令。太好了! – Fuhrmanator

8

使用gst,它很簡單。把它放到hi.st中:

Transcript show: 'Hi!' 

然後運行gst hi.st就完成了。

要從命令行傳遞參數,你做如下:

Transcript show: 'Hi ' , Smalltalk arguments first , '!' 

然後運行gst hi.st -a World

+1

更多信息可以在gst文檔中找到:http://smalltalk.gnu.org/documentation –

0
gst - <<<"'hello' printNl" 

這是命令行上提供的腳本的通用模式。它被稱爲這裏的字符串。破折號將文件名稱設置爲標準輸入。並且Triple小於將下列字符串放在標準英寸文件中。您仍然可以獲得命令行參數擴展。

您可以通過here documents獲得更多的愛好者,讓您可以在腳本中輸入多行命令,或者在命令行中輸入小於2的多行命令。

相關問題