Exit Shell script with error if any command fails



I wrote a Bash script today to automate my code review process and I noticed that even when certain commands in the workflow fail, the script still executes the remaining commands.


For example, let's say I have two commands that run synchronously:


git merge origin/dev git tag <new-tag>


In this case, if the `git merge` command fails due to some reason, it will still create a new tag, which is not my intended workflow.


To avoid this, if any of the commands returns a non-zero exit status, the script should break and exit. This can be achieved in Bash by using the `-e` option.


Add the following at the very top of your script (below the shebang line):


#!/bin/bash set -e


This will enable the `-e` option for the entire script.

If you only want to enable this option for specific commands, you can prefix them with `set -e`, like this:


set -e git push


This will cause the script to exit if the `git push` command fails.


Mac OS List directory in tree view using find command.

In mac (also in a Linux systems) you will have to install an additonal package called `tree` to display the content of folder in a tree view. 




But what if you are like me; someone who doesn't like to install additional packages just for a simple task? Well, you are at the right place then. 


Here is a nice command to get that done for you. Just run the following. 


 find . -print | sed -e 's;[^/]*/;|____;g;s;____|; |;g' 

That's just it. You should see a nice tree output as shown in the above screenshot :) 


You could also convert this to a shell function, or an alias with a parameter to run this easily in the future.


Leave a comment if it helped you.