В моем коде Julia я хочу вызывать различные внешние команды, которые получают данные из стандартного ввода и выводят вывод при стандартном выводе.Я хотел бы хранить данные в строках, чтобы они читались и записывались в эти процессы.Для определенности, скажем, процесс tr [a-z] [A-Z]
.Моя оболочка будет
function toupper(string)
fn, fh = mktemp()
print(fh, string)
close(fh)
result = pipeline(fn, `tr [a-z] [A-Z]`) |> readstring
rm(fn)
result
end
(это синтаксис Julia 0.6; замените readstring
на io->read(io,String)
)
Я бы хотел более чистый способ сделать это;в идеале, команда printer(string)
, которая создает поток, производящий содержимое строки, так что указанная выше команда будет закодирована как
toupper(string) = pipeline(printer(string), `tr [a-z] [A-Z]`) |> readstring
(Действительно, будет много команд, подобных приведенным выше, иИз соображений эффективности я бы хотел избежать создания и удаления всех этих временных файлов)