Qual é a definição de uma matriz sendo definida?

0
  1. A definição para uma matriz sendo definida é do manual bash:

    An array variable is considered set if a subscript has been assigned a value. The null string is a valid value.

    • Significa que uma matriz é definida se e somente se o número de seus elementos for maior que zero?

    • O array a seguir está definido, myarr=() ?

    • O manual também diz

      A parameter is set if it has been assigned a value. The null string is a valid value.

      Como uma matriz também é um parâmetro, como a definição de uma matriz sendo definida está de acordo com a definição de um parâmetro sendo definido?

      Por exemplo, myvar="" está definido, mas é myarr=() definido? myarr foi atribuído a um valor, que é nulo?

  2. Há uma definição diferente para uma matriz sendo definida no link

    For shells that support arrays, except for yash and zsh that would not report as set array variables unless the element of indice 0 has been set.

    For bash (but not ksh93 nor zsh), for variables of type associative array, that would not report them as set unless their element of key "0" has been set.

    Esta definição é incorreta, porque um nome de matriz sem assinatura na verdade refere-se ao elemento indexado pelo índice / chave 0 em vez de se referir a toda a matriz, de acordo com o manual do Bash

    Referencing an array variable without a subscript is equivalent to referencing with a subscript of 0.

    Essa é a definição na verdade, para o elemento indexado pelo índice / chave 0 sendo definido, não para a matriz sendo definida?

    Por exemplo, ${myarr+1} e [[ -v myarr ]] são os aplicativos para uma matriz myarr das formas usuais de testar se uma variável / parâmetro está definida. Qual deles myarr significa: myarr[0] ou a matriz inteira myarr ?

  3. O que é definição POSIX para uma matriz shell sendo definida?

por Tim 03.05.2016 / 21:56

1 resposta

0

  • Does it mean that an array is set if and only if the number of its elements is greater than zero?

Sim.

  • Is the following array set, myarr=()?

Não.

  • how does the definition of an array being set agree with the definition of a parameter being set?

Ambos são iguais, não vejo problema aqui:

  • Um parâmetro é definido se foi atribuído um valor. A string nula é um valor válido.

  • Uma variável de matriz é considerada definida se ... foi atribuído um valor. A string nula é um valor válido.

  1. There is a different definition ...

Qual é a resposta no link que descreve os detalhes de como o teste [ -n "${var+set}" ] funciona, sem definir o que é definido ou não, não para variáveis normais, não para matrizes.

Por favor, note o that em that would not report ... .

  1. What is POSIX definition for a shell array being set?

Não há "matrizes de shell" no POSIX.

    
por 07.05.2016 / 02:57

Tags