2013-06-23 19 views
11

Ho trovato un (possibilmente obsoleto e non corretto) blog post from 2004 che ha affermato che era impossibile eseguire gli script Smalltalk dalla riga di comando. Da allora è cambiato qualcosa ed è possibile eseguire gli script Smalltalk dalla riga di comando? Ho eseguito molte ricerche su Google e non ho trovato alcuna informazione su questo argomento.È possibile eseguire gli script Smalltalk dalla riga di comando?

C'è un modo per salvare uno script Smalltalk (come questo) come file e quindi eseguire lo script dalla riga di comando?

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

Quale smalltalk stai utilizzando? Pharo ha Coral su http://rmod.lille.inria.fr/coral/ – msandiford

+0

@msandiford Sto usando GST Smalltalk, ma potrei essere in grado di usare anche Pharo, a seconda che ci siano differenze sintattiche tra GNU Smalltalk e Pharo. (In effetti, non sono nemmeno sicuro se ci siano significative differenze sintattiche tra ciascuna implementazione Smalltalk). –

+0

@msandiford Inoltre, non capisco ancora le istruzioni per generare gli script della shell Coral. Secondo la [Guida introduttiva] (http://rmod.lille.inria.fr/coral/getting-started.html), dovrei "mettere questi file nel posto giusto prima di generare gli script", ma la guida non Spiega dove mettere i file. –

risposta

11

Pharo ha decente supporto linea di comando e un semplice zeroconf script per installarlo:

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

usiamo questi strumenti in maniera regolare sul nostro ci servers.

Le nuove maniglie della riga di comando possono essere installate facilmente mediante sottoclasse. Troverete una documentazione parziale here.

Coral mira a interfacce più complesse e supporta l'analisi di parametri complessi. Gli strumenti della riga di comando predefiniti forniti con Pharo seguono un approccio piuttosto semplicistico e devi controllare ed elaborare i parametri manualmente.

+0

La documentazione citata mostra usando 'stdin' con' eval', ad es., Echo "1 + 2" | $ PHARO_VM my.image eval'. Con Pharo 6.1 non funziona sotto ubuntu 17 (il comando si blocca). Sta funzionando con l'espressione come argomento passato. Sto cercando di trovare un modo per valutare gli script arbitrari da un file, ad esempio, 'cat myScript | ... 'senza definire il gestore di comandi (sottoclasse, ecc.) all'interno di un'immagine. – Fuhrmanator

+0

OK, sto usando il comando 'st' una volta che ho rinominato il mio script' myScript.st'. Questo è './pharo Pharo.image st myScript.st' sta lavorando con comandi Pharo arbitrari. Bello! – Fuhrmanator

8

Con gst, è semplice. Mettere questo in hi.st:

Transcript show: 'Hi!' 

Poi gestita gst hi.st e il gioco è fatto.

per passare argomenti da linea di comando, fate come segue:

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

Poi gestita gst hi.st -a World

+1

Ulteriori informazioni sono disponibili nella documentazione gst: http://smalltalk.gnu.org/documentation –

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

Questo è un modello universale per la fornitura di uno script sulla riga di comando. Si chiama una stringa qui. Il trattino sta impostando il nome del file sullo standard input. E il Triple meno di rende la seguente stringa un file sul posto su standard in. Si ottiene ancora l'espansione dei parametri della riga di comando.

È possibile ottenere molto più divertente con here documents che consente di digitare comandi multilinea in uno script o direttamente sulla riga di comando con doppio meno di.

Problemi correlati