Combining Output of Multiple Bash Commands Into One Line
By Adrian Sutton
I wanted to create a CSV file showing the number of JUnit tests in our codebase vs the number of Spock tests over time. I can count the number of tests, along with the revision pretty easily with:
git svn find-rev HEAD
find src/test -name '*Test.java' | wc -l
find src/test -name '*Spec.groovy' | wc -l
But that outputs the results on three separate lines and I really want them on one line with some separator (comma, space or tab). The simplest way to achieve that is:
echo "$(git svn find-rev HEAD), $(find src/test -name '*Test.java' | wc -l), $(find src/test -name '*Spec.groovy' | wc -l)"
It’s also very handy to remember that echo has a -n option which omits the trailing new line, so:
echo -n 'Revision: ' && git svn find-rev HEAD
outputs:
Revision: 55450