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.
There isn’t. The syntax is
if COMMANDthenCOMMAND(s)...elseCOMMAND(s)...fi
I believe, if you write the then onto the next line, then you don’t need the semicolon.
Yes, but that’s true of all commands.
foo; bar; baz
is the same as
foobarbaz
All the ] and -z stuff has nothing to do with if. In your example, the command you’re running is literally called [. You’re passing it three arguments: -z, "$var", and ]. The ] argument is technically pointless but included for aesthetic reasons to match the opening ] (if you wanted to, you could also write test -z "$var" because [ is just another name for the test command).
Since you can logically negate the exit status of every command (technically, every pipeline) by prefixing a !, you could also write this as:
if ! test"$var"; then ...
The default mode of test (if given one argument) is to check whether it is non-empty.
Now, if you don’t want to deal with the vagaries of the test command and do a “native” string check, that would be:
My god… I’m so confused by your comment XD ! OP’s command is something I already came across, so I somehow got it… But your comment put me in total brain rot !
There isn’t. The syntax is
if COMMANDthenCOMMAND(s)...elseCOMMAND(s)...fi
Yes, but that’s true of all commands.
is the same as
All the
]
and-z
stuff has nothing to do withif
. In your example, the command you’re running is literally called[
. You’re passing it three arguments:-z
,"$var"
, and]
. The]
argument is technically pointless but included for aesthetic reasons to match the opening]
(if you wanted to, you could also writetest -z "$var"
because[
is just another name for thetest
command).Since you can logically negate the exit status of every command (technically, every pipeline) by prefixing a
!
, you could also write this as:if ! test "$var"; then ...
The default mode of
test
(if given one argument) is to check whether it is non-empty.Now, if you don’t want to deal with the vagaries of the
test
command and do a “native” string check, that would be:case "$var" in "") echo "empty";; *) echo "not empty";;esac
My god… I’m so confused by your comment XD ! OP’s command is something I already came across, so I somehow got it… But your comment put me in total brain rot !
Now this is enlightening