Bash if ; 返回true
本周一直在学习bash,遇到了一个障碍。
#!/bin/sh if [ false ]; then echo "True" else echo "False" fi
这将始终输出真,即使条件似乎表明否则。 如果我删除括号[]
然后它的作品,但我不明白为什么。
您正在运行带有参数“false”的[
(aka test
)命令,而不运行命令false
。 由于“false”是非空string,所以test
命令总是成功的。 要真正运行命令,请删除[
命令。
if false; then echo "True" else echo "False" fi
我发现我可以通过运行如下一些基本逻辑:
A=true B=true if ($A && $B); then C=true else C=false fi echo $C
使用真/假消除一些括号混乱…
#! /bin/bash # true_or_false.bash [ "$(basename $0)" == "bash" ] && sourced=true || sourced=false $sourced && echo "SOURCED" $sourced || echo "CALLED" # Just an alternate way: ! $sourced && echo "CALLED " || echo "SOURCED" $sourced && return || exit