【问题标题】:Differences between [] and () in an "if" condition [duplicate]“if”条件下 [] 和 () 之间的差异 [重复]
【发布时间】:2013-06-01 13:33:43
【问题描述】:

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

【问题讨论】:

标签: bash shell


【解决方案1】:

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

if grep pattern file; then ...; fi

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

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

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

【讨论】:

  • 好的,根据你的最后一句话,你能解释为什么它不起作用吗?我的意思是,在 "crontab -l > /dev/null 2>&1" $?是 1. if (crontab -l > /dev/null 2>&1);然后回显“有一些计划”,否则回显“没有任何计划”fi
  • 算了。这只是一个逻辑错误!谢谢
【解决方案2】:

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

例如

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

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

if (command) 在子shell 中执行command

【讨论】:

    猜你喜欢
    • 2013-04-23
    • 2014-05-19
    • 1970-01-01
    • 2012-11-21
    • 2012-12-16
    • 1970-01-01
    • 2018-07-24
    • 1970-01-01
    • 2016-09-03
    相关资源
    最近更新 更多