有人可以向我解释一下或指出一些文件,其中“if()......”和“if [] ......”之间的区别可以澄清吗?
答案 0 :(得分:11)
if
只是将普通的shell命令作为参数,并评估命令的退出代码。例如,你可以做
if grep pattern file; then ...; fi
bash中的 ()
执行子shell中的内容,因此您可以在子shell中基本指定任何命令。
[]
是一个shell命令(技术上是[
命令),它根据特定语法计算表达式。
因此,if (...)
用于测试命令的退出代码(在大多数情况下()
是冗余的),而if [...]
用于使用语法测试表达式test
。
答案 1 :(得分:4)
[
符号实际上是一个命令。它等同于test
命令。
例如
if test "$foo" = 'bar'; then ...
与
相同if [ "$foo" = 'bar' ]; then ...
然而,if (command)
在子shell中执行command
。