(C {} {}) (command.Simple words: [ (compound_word parts:[(Token id:Id.Lit_Chars span_id:0 val:echo)]) (compound_word parts:[(Token id:Id.Lit_Chars span_id:2 val:hi)]) ] do_fork: T ) oil AST
(C {<echo>} {<hi>})
    
oil AST
(command.Simple
  words: [
    (compound_word parts:[(Token id:Id.Lit_Chars span_id:0 val:echo)])
    (compound_word parts:[(Token id:Id.Lit_Chars span_id:2 val:hi)])
  ]
  do_fork: T
)
    
OK test-ast-formats osh-0.11.0$ one OK test-exit-builtin-interactive  App Bundle Usage  Usage: oil.ovm MAIN_NAME [ARG]... MAIN_NAME [ARG]... oil.ovm behaves like busybox. If it's invoked through a symlink, e.g. 'osh', then it behaves like that binary. Otherwise, the binary name can be passed as the first argument, e.g.: oil.ovm osh -c 'echo hi'  bin/osh Usage  Usage: osh [OPTION]... SCRIPT [ARG]... osh [OPTION]... -c COMMAND [ARG]... The command line accepted by bin/osh is compatible with /bin/sh and bash. osh -c 'echo hi' osh myscript.sh echo 'echo hi' | osh It also has a few enhancements: osh -n -c 'hello' # pretty-print the AST osh --ast-format text -n -c 'hello' # print it full osh accepts POSIX sh flags, with these additions: -n parse the program but don't execute it. Print the AST. --ast-format what format the AST should be in  bin/oil Usage  Usage: oil [OPTION]... SCRIPT [ARG]... oil [OPTION]... -c COMMAND [ARG]... bin/oil is the same as bin/osh with a the oil:all option group set. So bin/oil also accepts shell flags. oil -c 'echo hi' oil myscript.oil echo 'echo hi' | oil  bin/osh Usage  Usage: osh [OPTION]... SCRIPT [ARG]... osh [OPTION]... -c COMMAND [ARG]... The command line accepted by bin/osh is compatible with /bin/sh and bash. osh -c 'echo hi' osh myscript.sh echo 'echo hi' | osh It also has a few enhancements: osh -n -c 'hello' # pretty-print the AST osh --ast-format text -n -c 'hello' # print it full osh accepts POSIX sh flags, with these additions: -n parse the program but don't execute it. Print the AST. --ast-format what format the AST should be in  bin/oil Usage  Usage: oil [OPTION]... SCRIPT [ARG]... oil [OPTION]... -c COMMAND [ARG]... bin/oil is the same as bin/osh with a the oil:all option group set. So bin/oil also accepts shell flags. oil -c 'echo hi' oil myscript.oil echo 'echo hi' | oil OK test-help echo; echo; | ^ [ -c flag ]:1: Invalid word while parsing command _tmp/osh-usage-noexec.txt appears empty, as expected OK test-noexec-fails-properly ===== Hello hi inside func in subshell another ComSub ===== EMPTY ===== NO TRAILING NEWLINE hi OK test-osh-file osh-0.11.0$ hi osh-0.11.0$ ^D osh-0.11.0$ ; ^ [ stdin -i ]:1: Invalid word while parsing command osh-0.11.0$ osh-0.11.0$ ^D ;echo OIL OIL ^ [ stdin -i ]:1: Invalid word while parsing command osh-0.11.0$ osh-0.11.0$ ^D v=`echo \"` ^ [ backticks in [ stdin -i ] ]:1: Unexpected EOF reading double-quoted string that began here osh-0.11.0$ osh-0.11.0$ ^D OK test-osh-interactive hi inside func in subshell another ComSub ===== EMPTY ===== NO TRAILING NEWLINE hi hi line continuation two here doc command sub OK test-osh-stdin TESTRC$ ^D osh-0.11.0$ ^D osh-0.11.0$ ^D OK test-rc-file Oil version 0.11.0 Release Date: - Arch: x86_64 OS: Linux Platform: #1 SMP Debian 5.10.106-1 (2022-03-17) Compiler: GCC 8.3.0 Interpreter: CPython Interpreter version: 2.7.16 Bytecode: - OK test-version All test/osh-usage.sh tests passed.