I’ve got a few mildly ropey bash scripts which I could do with making a bit more resilient, and perhaps even operating faster ;)
As such, I found this page really interesting: https://ricardoanderegg.com/posts/bash_wrap_functions/
In it, Ricardo introduces me to two things which are interesting.
- Using the
wait
command literally waits for all the backgrounded tasks to finish. - Running bash commands like this:
function1 & function2 & function3
should run all three processes in parallel. To be honest, I’d always usually do it like this:function1 &
function2 &
function3 &
The other thing which Ricardo links to is a page suggesting that if you’re downloading a bash script and executing it (which, you know, probably isn’t a good idea at the best of times), then wrapping it in a function, like this:
#!/bin/bash
function main() {
echo "Some function"
}
main
This means that the bash scripting engine needs to download and parse all the functions before it can run the script. As a result, you’re less likely to get a broken run of your script, because imagine it only got as far as:
#!/bin/bash
echo "Some fun
Then it wouldn’t have terminated the echo command (as an example)…
Anyway, some great tricks here! Love it!
Featured image is “$bash” by “Andrew Mager” on Flickr and is released under a CC-BY-SA license.