Hi Jinsong, I found a couple things that may help. To run a scheme script, this stackoverflow post seemed appropriate:
which boils down to:
$ mit-scheme --quiet --load program.scm --eval '(exit)'
For shelling out, or running subprocesses, this program worked as you requested:
file:program.scm starts
8< -----------------------------------------------------------
(load-option 'synchronous-subprocess)
(display (with-string-output-port
(lambda (port)
(run-shell-command "ls" 'output port))))
8< -----------------------------------------------------------
end-of-file
Here are the docs that helped: