如何从BASH中的数组项中减去1?

如何从BASH中的数组项中减去1?,bash,Bash,为了好玩,我在BASH中有一个附带项目,我有以下代码片段(ARRAY[0]is 8): 但是,返回时会出现以下错误: line 16: 8[1]: command not found 我刚开始在BASH中工作,所以我可能犯了一个明显的错误,但我一直在寻找这样一个问题的答案,但没有结果。最小的变化就是: ARRAY[0]=$(( ${ARRAY[0]} - 1 )) 注: 在要分配给的变量的名称之前没有$(foo=,而不是$foo=) 作业上的=周围没有空格 $(())是输入数学上下文(并扩

为了好玩,我在BASH中有一个附带项目,我有以下代码片段(
ARRAY[0]
is 8):

但是,返回时会出现以下错误:

line 16: 8[1]: command not found

我刚开始在BASH中工作,所以我可能犯了一个明显的错误,但我一直在寻找这样一个问题的答案,但没有结果。

最小的变化就是:

ARRAY[0]=$(( ${ARRAY[0]} - 1 ))
注:

  • 在要分配给的变量的名称之前没有
    $
    foo=
    ,而不是
    $foo=
  • 作业上的
    =
    周围没有空格
  • $(())
    是输入数学上下文(并扩展到该操作的结果)的语法

    • 最小的变化就是:

      ARRAY[0]=$(( ${ARRAY[0]} - 1 ))
      
      注:

      • 在要分配给的变量的名称之前没有
        $
        foo=
        ,而不是
        $foo=
      • 作业上的
        =
        周围没有空格
      • $(())
        是输入数学上下文(并扩展到该操作的结果)的语法

      在bash中的任何作业中,都不允许在
      =
      周围有空格。这根本不是特定于数组的。顺便说一句,您会发现这一错误和其他错误……正如良好实践说明——所有caps变量名都用于对操作系统或shell有意义的变量,而POSIX规范保留了至少一个小写字符的名称供应用程序使用。请参阅,第四段。(并且
      ==
      不是
      []中的标准字符串比较运算符)
      --这只是一个
      =
      。Bash支持将
      =
      作为扩展,但当有人试图在使用ash或dash的平台上使用
      /bin/sh
      运行您的代码时,它会咬到您;请参阅。引用以避免错误,并更改变量名,这将使第一行
      在[“$alive”=true]
      )。在bash中的任何作业中,都不允许在
      =
      周围有空格。这根本不是特定于数组的。顺便说一句,您会发现这一错误和其他错误……正如良好实践说明——所有caps变量名都用于对操作系统或shell有意义的变量,而POSIX规范保留了至少一个小写字符的名称供应用程序使用。请参阅,第四段。(并且
      ==
      不是
      []中的标准字符串比较运算符)
      --这只是一个
      =
      。Bash支持将
      =
      作为扩展,但当有人试图在使用ash或dash的平台上使用
      /bin/sh
      运行您的代码时,这会咬到您;请参阅。引用以避免错误,并更改变量名,这将使第一行
      在[“$alive”=true]
      时生效。