Differences between [] and () in an “if” condition
有人能给我解释一下,或者给我指出一些文件,说明"如果()…"和"如果[……"之间的区别,好吗?
- ()用于指定函数,而[]用于测试条件/评估。
- 这里还有一个问题已经得到了解答:stackoverflow.com/questions/12765340/…
- stackoverflow.com/questions/2188199/…
- @在这种情况下,nsd,()将用于在子shell中运行命令管道,if将作用于退出状态。
if只需要一个普通的shell命令作为参数,并计算该命令的退出代码。例如,您可以
1
| if grep pattern file; then ...; fi |
bash中的()执行子shell中的内容,因此基本上可以指定子shell中的任何命令。
bash中的[]是一个shell命令(技术上是[命令),它根据特定的语法来计算表达式。
因此,if (...)用于测试命令的退出代码(在大多数情况下,()是多余的),而if [...]用于使用test的语法测试表达式。
- 好吧,根据你最后一句话,你能解释一下为什么它不起作用吗?我的意思是,在"crontab-l>/dev/null 2>&;1"$之后?是1。如果(crontab-l>/dev/null 2>&;1);那么echo"有计划的"else echo"没有计划的"fi
- 算了吧。这只是一个逻辑错误!谢谢
[符号实际上是一个命令。它相当于test命令。
例如
1
| if test"$foo" = 'bar'; then ... |
号
与
1
| if ["$foo" = 'bar' ]; then ... |
鉴于,if (command)在子shell中执行command。