Details
Description
Example usage:
echo osgi:ls | bin/client
or:
bin/client < commands.karafsh
or redirecting stdout to file:
echo osgi:ls | bin/client > bundles.txt
Expected outcome:
1. Output of the command printed to stdout
2. Banners etc. (if any) printed to stderr
3. Shell prompt should not be output at all
4. The client exits immediately
Actual behavior:
1. All output including banners and the shell prompt are printed to stdout (only)
2. The client then hangs but still using around 20% CPU usage. It's not possible to Ctrl+C, and need to kill the process.
GNU tools (like bash) tend to detect the presence of an input stream, to differ between interactive mode and a batch mode.
If this is not possible, can also add a switch e.g. "--batch" or "-b" for "Batch mode".
Note that the karaf "bin/shell" script already handles this quite nicely... by not hanging after executing commands, and exits properly.
BTW this should also be possible to do on karaf launcher itself (i.e. start Karaf, execute command(s), then immediately shutdown the runtime).