*** Running test-ast-formats (command.Simple blame_tok: more_env:[] words:[{} {}] redirects:[] do_fork:T) (command.Simple blame_tok: (Token id: Id.Lit_Chars col: 0 length: 4 span_id: 0 line: (SourceLine line_num:1 content:'echo hi' src:(source__CFlag)) tval: echo ) more_env: [] words: [ (CompoundWord parts: [ (Token id: Id.Lit_Chars col: 0 length: 4 span_id: 0 line: (SourceLine line_num:1 content:'echo hi' src:(source__CFlag)) tval: echo ) ] ) (CompoundWord parts: [ (Token id: Id.Lit_Chars col: 5 length: 2 span_id: 2 line: (SourceLine line_num:1 content:'echo hi' src:(source__CFlag)) tval: hi ) ] ) ] redirects: [] do_fork: T ) oil AST
(command.Simple blame_tok:<echo> more_env:[] words:[{<echo>} {<hi>}] redirects:[] do_fork:T)
    
oil AST
(command.Simple
  blame_tok: 
    (Token
      id: Id.Lit_Chars
      col: 0
      length: 4
      span_id: 0
      line: (SourceLine line_num:1 content:'echo hi' src:(source__CFlag))
      tval: echo
    )
  more_env: []
  words: [
    (CompoundWord
      parts: [
        (Token
          id: Id.Lit_Chars
          col: 0
          length: 4
          span_id: 0
          line: (SourceLine line_num:1 content:'echo hi' src:(source__CFlag))
          tval: echo
        )
      ]
    )
    (CompoundWord
      parts: [
        (Token
          id: Id.Lit_Chars
          col: 5
          length: 2
          span_id: 2
          line: (SourceLine line_num:1 content:'echo hi' src:(source__CFlag))
          tval: hi
        )
      ]
    )
  ]
  redirects: []
  do_fork: T
)
    
OK test-ast-formats *** Running test-exit-builtin-interactive [osh] lenny ~/git/oilshell/oil$ one OK test-exit-builtin-interactive *** Running test-help Oils 0.18.0 https://www.oilshell.org/ ~~~ oils-usage ~~~ bin/oils-for-unix is an executable that contains OSH, YSH, and more. Usage: oils-for-unix MAIN_NAME ARG* MAIN_NAME ARG* It behaves like busybox. The command name can be passed as the first argument: oils-for-unix ysh -c 'echo hi' More commonly, it's invoked through a symlink like 'ysh', which causes it to behave like that command: ysh -c 'echo hi' Oils 0.18.0 https://www.oilshell.org/ ~~~ osh-usage ~~~ bin/osh is compatible with POSIX shell, bash, and other shells. Usage: osh FLAG* SCRIPT ARG* osh FLAG* -c COMMAND ARG* osh FLAG* 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 Oils 0.18.0 https://www.oilshell.org/ ~~~ ysh-usage ~~~ bin/ysh is the shell with data tYpes, influenced by pYthon, JavaScript, ... Usage: ysh FLAG* SCRIPT ARG* ysh FLAG* -c COMMAND ARG* ysh FLAG* `bin/ysh` is the same as `bin/osh` with a the `ysh:all` option group set. So `bin/ysh` also accepts shell flags. ysh -c 'echo hi' ysh myscript.ysh echo 'echo hi' | ysh Oils 0.18.0 https://www.oilshell.org/ ~~~ osh-usage ~~~ bin/osh is compatible with POSIX shell, bash, and other shells. Usage: osh FLAG* SCRIPT ARG* osh FLAG* -c COMMAND ARG* osh FLAG* 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 Oils 0.18.0 https://www.oilshell.org/ ~~~ ysh-usage ~~~ bin/ysh is the shell with data tYpes, influenced by pYthon, JavaScript, ... Usage: ysh FLAG* SCRIPT ARG* ysh FLAG* -c COMMAND ARG* ysh FLAG* `bin/ysh` is the same as `bin/osh` with a the `ysh:all` option group set. So `bin/ysh` also accepts shell flags. ysh -c 'echo hi' ysh myscript.ysh echo 'echo hi' | ysh OK test-help *** Running test-noexec-fails-properly echo; echo; | ^ [ -c flag ]:1: Invalid word while parsing command _tmp/osh-usage-noexec.txt appears empty, as expected OK test-noexec-fails-properly *** Running test-osh-file ===== Hello hi inside func in subshell another ComSub ===== EMPTY ===== NO TRAILING NEWLINE hi OK test-osh-file *** Running test-osh-interactive [osh] lenny ~/git/oilshell/oil$ hi [osh] lenny ~/git/oilshell/oil$ ^D [osh] lenny ~/git/oilshell/oil$ [osh] lenny ~/git/oilshell/oil$ ; ^ [ stdin -i ]:1: Invalid word while parsing command [osh] lenny ~/git/oilshell/oil$ ^D [osh] lenny ~/git/oilshell/oil$ ;echo OIL OIL ^ [ stdin -i ]:1: Invalid word while parsing command [osh] lenny ~/git/oilshell/oil$ ^D [osh] lenny ~/git/oilshell/oil$ [osh] lenny ~/git/oilshell/oil$ ^D OK test-osh-interactive *** Running test-osh-stdin hi inside func in subshell another ComSub ===== EMPTY ===== NO TRAILING NEWLINE hi hi line continuation two here doc command sub OK test-osh-stdin *** Running test-rc-file TESTRC$ ^D osh-0.18.0$ ^D osh-0.18.0$ ^D OK test-rc-file *** Running test-version Oils 0.18.0 https://www.oilshell.org/ Release Date: - Arch: x86_64 OS: Linux Platform: #167~18.04.1-Ubuntu SMP Wed May 24 00:51:42 UTC 2023 Compiler: GCC 7.5.0 Interpreter: CPython Interpreter version: 2.7.17 Bytecode: - OK test-version test/osh-usage.sh: 9 tests passed.