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)...fiYes, but that’s true of all commands.
is the same as
All the
]and-zstuff 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 thetestcommand).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
testcommand and do a “native” string check, that would be:case "$var" in "") echo "empty";; *) echo "not empty";;esacMy 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