Pattern: Use of [ 1 ]
instead of true
Issue: -
This is a stylistic suggestion to use true
instead of [ 1 ]
.
[ 1 ]
seems to suggest that the value "1" is somehow relevant to the statement. This is not the case: it doesn't matter. You can replace it with [ 0 ]
or [ wombat ]
, and it will still always be true.
If you instead use true
, the value is actually considered and can be inverted by replacing with false
.
On bash, you can also use (( 1 ))
, which evaluates to true much like in C. (( 0 ))
is similarly false.
Example of incorrect code:
while [ 1 ]
do
echo "infinite loop"
done
Example of correct code:
while true
do
echo "infinite loop"
done