wiki/structured/shell.oil.org

47 lines
1.5 KiB
Org Mode
Raw Normal View History

#+title: Oil shell
#+date: "2021-05-09 16:40:50 +08:00"
#+date_modified: "2021-05-09 17:15:03 +08:00"
#+language: en
For future references:
#+begin_src sh :results output
oil --version
#+end_src
#+RESULTS:
: Oil version 0.8.7
: Release Date: 2021-01-23 07:35:11+00:00
: Arch: x86_64
: OS: Linux
: Platform: #13~1617215757~20.10~97a8d1a-Ubuntu SMP Thu Apr 1 21:09:17 UTC 2
: Compiler: GCC 10.2.0
: Interpreter: OVM
: Interpreter version: 2.7.13
: Bytecode: bytecode-opy.zip
This version contains incomplete implementation and documentation which is why I'm noting it here.
- You can make an array so far with ~var x = %()~.
- To push for an array, use ~push :ARRAY_VAR $ITEMS...~.
- Oil has two main syntactic modes: command and expression mode.
Command mode is more like Bash while expression mode is more like Python.
This is how Oil can make a rich and expressive scripting that is closer to the shell.
- Oil will go into expression mode in few places:
+ In RHS of an assignment expression.
+ In ~if~ statements (e.g., ~if ($EXPR) { echo "WHOA" }~).
+ Interpolated Oil expressions with ~$[]~ (e.g., ~$[true]~, ~$[len(ARGV)~).
- Oil can parse different modes, making it possible to create DSLs and to deal with the complex syntax of the shell.
- You can also create an array with ~[]~.
The ~%()~ is more like for an array of objects.
- You can enter into expression mode with ~_~.
Although, this simply ignores the expression and will not be printed.
Still pretty useful.