Bash script writing is a import approach to configure the linux system. Suppose we wish to add a user if not exists, the command may seems as follow:
TARGET_USER=alice
if (! id -u $TARGET_USER > /dev/null 2>&1 ); then
echo "creating user $TARGET_USER"
# adduser $TARGET_USER
fi
However, it is kind of too long. In this case short-circuiting is a alternative solution.
We can write a shorter code as follow:
(! id -u $TARGET_USER > /dev/null 2>&1 ) && \
echo "creating user $TARGET_USER"
It is not enough.
The above command is equal to this script
if (! id -u $TARGET_USER > /dev/null 2>&1 ); then
echo "creating user $TARGET_USER"
else
false
fi
If our bash has a parameter -e, the above command will return a non zero code, and the whole process may terminated unexpected.
To avoid this situation, we may use a || to make sure it will always return true
(! id -u $TARGET_USER > /dev/null 2>&1 ) && \
echo "creating user $TARGET_USER" || \
true
If the result before || returns false, the whole formula will equal to
false || true
And the final result would be true.
We can also add some description.
(! id -u $TARGET_USER > /dev/null 2>&1 ) && \
echo "creating user $TARGET_USER" || \
echo "user $TARGET_USER already exists"