ksh - Lesen einer nicht gesetzten Variablen mit dem Befehl read in ein Array

297
Neil

Ich habe das folgende ksh-Skript, wobei $ an_unset_var eine unset-Variable ist, die zum ersten Mal verwendet wird:

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

Bei der Ausführung erhalte ich folgende Ausgabe:

0 1 

Warum wird beim Lesen einer nicht gesetzten Variablen in ein Array mit dem Befehl read ein leeres Element in das Array eingegeben? Warum wird dieses leere Element als gültiges abzählbares Element des Arrays betrachtet?

Wichtige Bearbeitung:

Fehlender Unterstrich in der ersten Zeile des Skripts.

read -A arr <<< "$an_unset_var" 

$ an_unset_var ist die Variable.

0
Wird auch auf [unix & linux] (https://unix.stackexchange.com/q/439800/4667) diskutiert. glenn jackman vor 6 Jahren 0

1 Antwort auf die Frage

0
thrig

Warum denken Sie, dass das Array ein leeres Element enthält?

% mksh $ read -A arr <<< "$broda $brode $brodi mlatu" $ print -l $arr mlatu $  

das ist mit mksh R56c; arrenthält ein einzelnes Element, weshalb ${#arr[*]}eine Anzahl von 1...

Es tut mir leid. $ an_unset_variable ist eine einzelne Variable. Ordnungsgemäß aktualisiert Neil vor 6 Jahren 0