Why -z? I have no idea. I will also routinely forget the ]; then part. I believe, if you write the then onto the next line, then you don’t need the semicolon. And then someone’s probably gonna tell me to use double-brackets [[ ]] instead, which probably does something.
Arguably, I never fully learned Bash syntax, but it also is just a stupid if-statement. There shouldn’t be that much complexity in it.
-z means zero length and mostly [[ ]] are used when you want to add multiple conditions. But there are also few test cases which are only in bash so they also need double brackets
Here’s an example, I have looked up many times (like just now), which checks whether a string is empty:
var="" if [ -z "$var" ]; then echo "empty" else echo "not empty" fiWhy
-z? I have no idea. I will also routinely forget the]; thenpart. I believe, if you write thethenonto the next line, then you don’t need the semicolon. And then someone’s probably gonna tell me to use double-brackets[[ ]]instead, which probably does something.Arguably, I never fully learned Bash syntax, but it also is just a stupid if-statement. There shouldn’t be that much complexity in it.
From
man test(note that[ <expr> ]is just sugar fortest <expr>):-n STRING the length of STRING is nonzero -z STRING the length of STRING is zeroSo,
-zstands for Zero.Hope this helps you remember it!
You could write that as 1 line:
[ -z "$var" ] && echo "empty" || echo "no it aint"-zmeans zero length and mostly[[ ]]are used when you want to add multiple conditions. But there are also few test cases which are only in bash so they also need double brackets