在bash中运行此脚本将打印出"hello"。
在bash中运行此脚本将打印出"hello"。
只有当我去掉括号时,bash才不会打印“hello”。
我原以为括号的整个前提是为了实现额外的功能,比如
编辑: 这是你所说的bash引用吗?它仍然打印出"hello"。
if [ false ]; then
echo hello
fi
在bash中运行此脚本将打印出"hello"。
if [[ false ]]; then
echo hello
fi
只有当我去掉括号时,bash才不会打印“hello”。
if false; then
echo hello
fi
我原以为括号的整个前提是为了实现额外的功能,比如
&&
和||
,为什么在这种情况下它反而起到了相反的作用?编辑: 这是你所说的bash引用吗?它仍然打印出"hello"。
test=false
if [[ "$test" ]]; then
echo hello
fi
false(1)
,它总是返回失败。如果条件为[ false ]
,则执行命令test(1)
(或等效的内置命令),因为字符串"false"不为空,所以返回成功。 - undefined&&
和||
,这是完全错误的;在[ ]
或[[ ]]
测试中的语义与没有括号的情况完全不同。例如,ls -le foo
将使用l
和s
选项以及参数foo
运行ls
命令。但是[[ ls -le foo ]]
将尝试将ls
和foo
转换为整数(可能通过将它们解析为变量),并测试ls
是否小于或等于(使用-le
运算符)foo
。请参阅我在这里的回答。 - undefined