如何使用文本文件作为输入来提供 smalltalk 的交互式输入并将输出重定向到文件

How to use text file as input to feed in the interactive input of smalltalk and redirect output to a file

我正在努力寻找是否有办法提供输入 到 gst a.st b.st ... - 的交互命令 并重定向输出。通常,交互式缓冲区将 有 st> ... 并且当您键入命令时,它将通过调用输出一些内容 default/override displayString 方法到交互式输出。如何获取输入 并使用 linux 命令或一个小型的 smalltalk 测试脚本来提供输出。 谢谢。

这是一个人为设计的演示程序。它从标准输入读取字符串直到 EOF,对它们进行排序,然后打印出来:

input := stdin nextLine.
c := OrderedCollection new.

[ input ~= nil ] whileTrue: [
    c add: input.
    input := stdin nextLine.
].

c sort do: [ :each | each printNl ]

你可以运行交互(输入hhh后按Ctrl-D):

$ gst sortprog.st
tttt
aaa
vvvv
hhh
'aaa'
'hhh'
'tttt'
'vvvv'

或者我可以创建一个包含以下内容的文本文件test.in

tttt
aaa
vvvv
hhh

然后运行:

$ gst sortprog.st < test.in > test.out

然后检查输出文件的内容:

$ cat test.out
'aaa'
'hhh'
'tttt'
'vvvv'

如果您的程序有提示,它们当然会出现在输出文件中。 stdout 的任何内容都会转到该文件。