ksh - 使用读取命令将未设置的变量读取到数组中

ksh - 使用读取命令将未设置的变量读取到数组中

我有以下 ksh 脚本,其中 $an_unset_var 是第一次使用的未设置变量:

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

执行该命令,我得到以下输出:

0
1

为什么使用 read 命令将未设置的变量读入数组会在数组中输入空元素?为什么这个空元素会被视为数组的有效可数元素?

答案1

您将一个空字符串读入数组。该数组被取消设置,然后它的第一个元素被设置为空字符串。

空字符串是完全有效的数据。我不确定你期望发生什么。

等效的命令集是

unset arr
arr[0]=""

arr现在是一个只有一个元素的数组。它的元素是空字符串。

答案2

只是评论:bash 和 ksh 之间的区别

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

$ bash -c 'read -a a <<<""; declare -p a'
declare -a a='()'

相关内容