“if”条件下[]和()之间的差异

时间:2013-06-05 18:07:20

标签: bash shell

有人可以向我解释一下或指出一些文件,其中“if()......”和“if [] ......”之间的区别可以澄清吗?

2 个答案:

答案 0 :(得分:11)

if只是将普通的shell命令作为参数,并评估命令的退出代码。例如,你可以做

if grep pattern file; then ...; fi
bash中的

()执行子shell中的内容,因此您可以在子shell中基本指定任何命令。

bash中的

[]是一个shell命令(技术上是[命令),它根据特定语法计算表达式。

因此,if (...)用于测试命令的退出代码(在大多数情况下()是冗余的),而if [...]用于使用语法测试表达式test

答案 1 :(得分:4)

[符号实际上是一个命令。它等同于test命令。

例如

if test "$foo" = 'bar'; then ...

相同
if [ "$foo" = 'bar' ]; then ...

然而,if (command)在子shell中执行command