ksh - Lendo uma variável não definida em uma matriz usando o comando read [closed]

1

Eu tenho o seguinte script ksh, em que $ an_unset_var é uma variável não definida que está sendo usada pela primeira vez:

read -A arr <<< "$an_unset_var"
echo ${#an_unset_var}
echo ${#arr[*]}

Executando qual, recebo a seguinte saída:

0
1

Por que ler uma variável não definida em uma matriz usando o comando read insere um elemento vazio na matriz? Por que esse elemento vazio seria considerado um elemento contável válido da matriz?

    
por Neil 24.04.2018 / 19:04

2 respostas

0

Você lê uma string vazia no array. A matriz não está definida e, em seguida, o primeiro elemento é definido como a cadeia vazia.

A string vazia é um dado perfeitamente válido. Não tenho certeza do que você esperava que acontecesse.

O conjunto equivalente de comandos seria

unset arr
arr[0]=""

arr agora é uma matriz com um elemento. Seu elemento é a string vazia.

    
por 24.04.2018 / 19:22
0

Apenas um comentário: diferença entre o bash e o ksh

$ ksh -c 'read -A a <<<""; typeset -p a'
typeset -a a=('')

$ bash -c 'read -a a <<<""; declare -p a'
declare -a a='()'
    
por 24.04.2018 / 20:22