5

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

4

2 回答 2

15

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

if grep pattern file; then ...; fi

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

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

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

于 2013-06-05T18:11:18.750 回答
6

[符号实际上是一个命令。它相当于test命令。

例如

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

是相同的

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

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

于 2013-06-05T18:11:22.293 回答