2013-06-23 18 views
11

Znalazłem (prawdopodobnie nieaktualną i niepoprawną) blog post from 2004, która twierdziła, że ​​niemożliwe było uruchomienie skryptów Smalltalk z wiersza poleceń. Czy od tego czasu coś się zmieniło i czy możliwe jest uruchamianie skryptów Smalltalk z wiersza poleceń? Zrobiłem dużo wyszukiwania Google i nie znalazłem żadnych informacji na ten temat w ogóle.Czy można uruchamiać skrypty Smalltalk z wiersza poleceń?

Czy istnieje sposób na zapisanie skryptu Smalltalk (takiego jak ten) jako pliku, a następnie uruchomienie skryptu z wiersza poleceń?

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

Które smalltalk używasz? Pharo ma Coral na http://rmod.lille.inria.fr/coral/ – msandiford

+0

@msandiford Używam GST Smalltalk, ale mogę też używać Pharo, w zależności od tego, czy są jakieś syntaktyczne różnice między GNU Smalltalk i Pharo. (Właściwie to nie jestem nawet pewien, czy istnieją znaczące różnice składniowe między każdą implementacją Smalltalk). –

+0

@msandiford Ponadto nadal nie rozumiem instrukcji generowania skryptów powłoki Coral. Zgodnie z [poradnikiem Pierwsze kroki] (http://rmod.lille.inria.fr/coral/getting-started.html) powinienem "umieścić te pliki we właściwym miejscu przed wygenerowaniem skryptów", ale przewodnik nie nie wytłumaczyć, gdzie umieścić pliki. –

Odpowiedz

11

Pharo ma przyzwoitą obsługę wiersza poleceń i prosty zeroconf skrypt, aby go zainstalować:

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

używamy tych narzędzi na bieżąco na naszej ci servers.

Nowe klamry linii komend można łatwo zainstalować poprzez ich podklasę. Znajdziesz częściową dokumentację here.

Coral ma bardziej złożone interfejsy i obsługuje złożone analizowanie parametrów. Domyślne narzędzia wiersza poleceń dostarczane z Pharo są dość uproszczone i trzeba ręcznie sprawdzać i przetwarzać parametry.

+0

Cytowana dokumentacja pokazuje użycie 'stdin' z' eval', np. 'Echo" 1 + 2 "| $ PHARO_VM my.image eval'. Z Pharo 6.1 nie działa pod Ubuntu 17 (komenda zawiesza się). Działa z wyrażeniem jako argumentem przekazywanym. Próbuję znaleźć sposób na ocenę dowolnych skryptów z pliku, np. 'Cat myScript | ... 'bez definiowania obsługi komend (podklasy itd.) wewnątrz obrazu. – Fuhrmanator

+0

OK, używam polecenia 'st' po zmianie nazwy mojego skryptu' myScript.st'. To jest './pharo Pharo.image st myScript.st' działa z dowolnymi poleceniami Pharo. Miły! – Fuhrmanator

8

Z gst, to jest proste. Umieścić to w hi.st:

Transcript show: 'Hi!' 

Następnie uruchom gst hi.st i gotowe.

przekazywać argumenty z linii poleceń, należy wykonać następujące czynności:

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

Następnie uruchom gst hi.st -a World

+1

Więcej informacji można znaleźć w dokumentacji programu gst: http://smalltalk.gnu.org/documentation –

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

Jest to uniwersalny wzorzec dla dostarczania skryptu w linii poleceń. Nazywa się tu ciąg znaków. Myślnik ustawia nazwę pliku na standardowe wejście. I potrójny mniej niż czyni następujący ciąg w miejscu pliku na standardowym urządzeniu. Ciągle dostajesz rozszerzenie parametrów wiersza poleceń.

Możesz uzyskać dużo bardziej doświadczonego użytkownika dzięki here documents, który pozwala wpisywać polecenia wielowierszowe w skrypcie lub bezpośrednio w wierszu poleceń z podwójnym mniejszym niż.

Powiązane problemy