Bash “”中[]和()之间的差异;如果;条件
有人能给我解释一下,或者给我指出一些可以澄清“if()…”和“if[…”之间区别的文档吗?Bash “”中[]和()之间的差异;如果;条件,bash,shell,Bash,Shell,有人能给我解释一下,或者给我指出一些可以澄清“if()…”和“if[…”之间区别的文档吗?if只是将普通shell命令作为参数,并计算命令的退出代码。例如,你可以 if grep pattern file; then ...; fi bash中的()执行子shell中的内容,因此基本上可以指定子shell中的任何命令 bash中的[]是一个shell命令(技术上称为[命令),它根据特定语法计算表达式 因此,if(…)用于测试命令的退出代码(在大多数情况下,()是冗余的),而if[…]用于使用t
if
只是将普通shell命令作为参数,并计算命令的退出代码。例如,你可以
if grep pattern file; then ...; fi
bash中的()
执行子shell中的内容,因此基本上可以指定子shell中的任何命令
bash中的[]
是一个shell命令(技术上称为[
命令),它根据特定语法计算表达式
因此,
if(…)
用于测试命令的退出代码(在大多数情况下,()
是冗余的),而if[…]
用于使用test
语法测试表达式,[
符号实际上是一个命令。它相当于test
命令
比如说
if test "$foo" = 'bar'; then ...
与
if [ "$foo" = 'bar' ]; then ...
然而,
if(command)
在子shell中执行command
。()用于指定函数,[]用于测试条件/评估..下面是另一个已经回答过的问题:@NSD,()
在这个上下文中,将用于在子shell中运行命令管道,并且if
将对退出状态起作用。好的,根据你的最后一句话,你能解释一下为什么它不起作用吗?我的意思是,在“crontab-l>/dev/null 2>&1”之后,$是1。如果(crontab-l>/dev/null 2>&1);然后回显“有安排的事情”或者回显“没有什么预定的”这只是一个逻辑错误!谢谢