The naive implementation for concatenating strings in bash goes something like this:
#!/bin/bash statement="1234567890" result="" for i in $(seq 1 100000) do result=${result}${statement} done wc <<< ${result}
This takes around two minutes on a modern machine. This is slow. Very, very slow.
Instead you can build an intermediate array and use the star operator to expand it into a string. Make sure to change the input field seperator to empty, so that you don’t get spaces in between the individual entries:
#!/bin/bash statement="1234567890" for i in $(seq 1 100000) do statements[${#statements[@]}]=${statement} done IFS= eval 'result="${statements[*]}"' wc <<< ${result}
This will run in a few hundred milliseconds. You get roughly three orders of magnitude speedup.