代码之家  ›  专栏  ›  技术社区  ›  Chen Levy

bash:$[<arithexpression>]对$(<arithexpression>)

  •  27
  • Chen Levy  · 技术社区  · 14 年前

    foo=42
    bar=$[foo+1] # evaluates an arithmetic expression
    

    当我搜索这个的时候,我发现 http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_03_04.html#sect_03_04_05 :

    3.4.6. 算术展开

    $(( EXPRESSION )) 
    

    ...

    只要可能,Bash用户应该尝试使用方括号语法:

    $[ EXPRESSION ] 
    

    但是,这将只计算表达式的结果,而不进行任何测试。。。

    $(( EXPRESSION )) 形式如:

    foo=42
    bar=$((foo+1)) # evaluates an arithmetic expression
    

    那么,哪些测试不是用 $[...] $((...)) ,或者 $[...] $((...)) ?

    2 回复  |  直到 4 年前
        1
  •  38
  •   sth ACP    14 年前

    bash v3.2.48的手册页上说:

         $((expression))
    

    这个 痛击。

    所以 $[...]

        2
  •  13
  •   Brandon Rhodes    12 年前

    http://lists.gnu.org/archive/html/bug-bash/2012-04/msg00033.html

    在早期的提案中,使用了$[表达式]形式。从功能上来说 相当于目前案文中的“$(())”,但有人反对 提出1988年的KornShell已经实施了“$(())”和 没有令人信服的理由发明另一种语法。 case语句中的模式。