Description
It would be nice if there were more examples within the karaf documentation for using the shell language.
This documentation should be available within the 'help' command too if possible
For instance, there is currently no example of how the 'each' command works.
karaf@root> list = [1 2 3]; each ($list) { echo $it } 1 2 3
There is no mention of whether there support for returning/breaking early in the each command either. After checking the source it doesn't appear to be possible, but it would be nice to mention such a thing.
It would also be nice to show that the '[]' notation used will actually create an instance of java ArrayList, and as such you can perform 'get' on it to access values
karaf@root> list = ["Hello" world]; echo ($list get 0) ($list get 1)
Hello world
And that you can actually see the class implementation details with '[] class'
It would be nice to show if there is a way to access primitive array types too. And if this isn't possible, it might be nice to add that information
karaf@root> ("hello world" toCharArray)[0] Error executing command: [C cannot be cast to [Ljava.lang.Object;
It would nice to stress the importance of spaces in the shell language too, as I imagine that would be a very common gotcha
ie happy path if statement working as expected
foo = "foo" if { $foo equals "foo" } { echo "True!" }
karaf@root> shell:source script.txt True!
But without a space between the 'if' ie
if{ $foo equals "foo" } {'
Then you get the following error, and it's very hard to tell what has gone wrong
karaf@root> shell:source script.txt
Error executing command: Cannot coerce echo "true!"() to any of []
I am happy to help with this documentation update, as I've currently got a small amount of knowledge on the subject