TickTick enables you to put JSON in bash scripts. Yes, just encapsulate them with two back-ticks.
Note: This is just a fun hack. You may want to consider using mature languages like Ruby or Perl to solve actual real life problems. Oh who am I kidding, I use whitespace and brainfuck every day.
Usage
Proper usage (if there is such a thing), is to place the following line right after the "shbang" at the top of your script. For instance:
#!/bin/bash
#
# Nuclear_meltdown_preventer.sh
#
# This is really important stuff. Don't edit it!
#
. ticktick.sh
..
See how that's near the tippity-top? That's where it's supposed to go. If you put it lower, all bets are off. :-(
API
Arrays
A few array manipulation runtime directives are supported:
[] (as new Array)
``arr = ["foo"]``
[] (to index)
echo ``arr[0]``
length
arr_len=``arr.length()``; echo ${arr_len}
push
``arr.push(${arr_len})``
pop
echo ``arr.pop()``
shift
echo ``arr.shift()``
delete
echo ``key.value.delete()``
items
for x in ``arr.items()``; do echo "${x}"; done
Notes:
These feature do not preclude having variables by those names. You can have key.delete = 1 and then key.delete.delete()
Since TickTick is a Bash-emitting transpiler, things that don't work in bash (such as modifying in-shell variables in double quotes) don't work in TickTick.
Objects
{} (as new Object)
``obj = { "foo": "bar", "baz": "qux" }``
[] (to index)
echo ``obj["foo"]``
. (to index)
echo ``obj.baz``
Miscellaneous
tickParse - parse things inline
Inline parsing: You can parse a file in with the tickParse routine (see the example).
tickVars - see the currently defined variables
Show all variables: You can see the current values defined in the TickTick world with the tickVars routine.
If you don't like the output, there are some options to customize it. Try tickVars -h for more information.
tickReset - clear the currently defined variables
Clear all variables: You can erace any JSON you have created/imported with the tickReset routine.
__tick_var_debug - See the interim bash code
Dry run (display compiled code): TickTick is a mini-compiler that emits bash. If you declare export __tick_var_debug=1 at the top of your code (before you source ticktick.sh), then the code will not run but instead print what it would have run.
Bash variables ($) in JSON
Along with assignment operations1, and Javascript like indexing into objects and arrays.
Additionally, bash variables (eg., "$name") are preserved in the TickTick blocks. For instance, once could do
请发表评论