2013-06-23 5 views
11

コマンドラインからSmalltalkスクリプトを実行することが不可能であると主張していた(おそらく古くて間違った)blog post from 2004が見つかりました。それ以来何か変わったことがありますし、コマンドラインからSmalltalkスクリプトを実行することは可能ですか?私はたくさんのGoogleの検索をしましたが、このトピックに関する情報はまったく見つかりませんでした。コマンドラインから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を使っていますが、GNU Smalltalkと構文上の違いがあるかどうかによってPharoも使うことができますPharo。 (実際、各Smalltalk実装間に構文上の大きな違いがあるかどうかはわかりません)。 –

+0

@msandifordまた、私はまだCoralシェルスクリプトを生成するための手順を理解していません。 [Getting Started guide](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

OK、スクリプト 'myScript.st'の名前を変更したら、' 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" 

を実行し、次のようにコマンドラインから引数を渡すために

は、あなたが行います。ここの文字列と呼ばれます。ダッシュはファイル名を標準入力に設定します。そしてトリプルは以下の文字列を標準のインプレースファイルに置き換えます。コマンドラインのパラメータ拡張は引き続き得られます。

here documentsを使用すると、スクリプトで複数行のコマンドを入力したり、コマンド行に2文字以下の文字を入力したりすることができます。

関連する問題