nne*_*neo 13
if简单地将普通的shell命令作为参数,并评估命令的退出代码.例如,你可以做到
if grep pattern file; then ...; fi
Run Code Online (Sandbox Code Playgroud)
() 在bash中执行子shell中的内容,因此您可以在子shell中基本指定任何命令.
[]在bash中是一个shell命令(技术上是[命令),它根据特定的语法计算表达式.
因此,if (...)用于测试命令的退出代码(在大多数情况下()是冗余的),而if [...]用于使用语法测试表达式test.
该[符号实际上是一个命令。它等效于test命令。
例如
if test "$foo" = 'bar'; then ...
Run Code Online (Sandbox Code Playgroud)
是相同的
if [ "$foo" = 'bar' ]; then ...
Run Code Online (Sandbox Code Playgroud)
而在子shell中if (command)执行command。