Mogę wydać polecenia Bash z Racket z (system "some command")
, ale funkcja zwraca # t zamiast wynikowego wyjścia z wiersza poleceń, który tylko drukuje. W jaki sposób mogę uzyskać wynik polecenia, które ma zostać zwrócone wraz z funkcją?Jak wyświetlić wynik wiersza poleceń w Racket?
5
A
Odpowiedz
7
Procedura ustawia stdout
na wartość parametru current-output-port
. Oznacza to, że możemy zebrać wszystko, co napisano pod numerem current-output-port
, na ciąg znaków i zwrócić to. Konstrukt with-output-to-string
ustawia current-output-port
na port, który niczego nie drukuje, ale ostatecznie zwraca to, co zostało napisane do portu jako ciąg znaków.
> (with-output-to-string (lambda() (system "date")))
"Sat Jun 25 12:20:12 CEST 2016\n"