+ # Parse the command arguments into 'slots'.
+ # All words following '>' are output arguments and are collected into slots[0].
+ # All words following '<' are input arguments and are collected into slots[1].
+ # slots[2..] store the parameters of each command in the pipeline.
+ #
+ # e.g. arv-run foo arg1 arg2 '|' bar arg3 arg4 '<' input1 input2 input3 '>' output.txt
+ # will be parsed into:
+ # [['output.txt'],
+ # ['input1', 'input2', 'input3'],
+ # ['foo', 'arg1', 'arg2'],
+ # ['bar', 'arg3', 'arg4']]