清空ksh中的现有数组

时间:2017-09-04 12:14:06

标签: linux unix scripting ksh

我有一个脚本,它将文件列表存储在一个数组中,如下所示

set -A my_array $(ls -tr $INPUT_DIRECTORY/*)

我必须清空此my_array变量才能将其用于其他目的。我不能声明另一个新数组。

有没有办法清除数组的内容并重新使用它?

提前致谢。

1 个答案:

答案 0 :(得分:2)

由于您已经使用set -A ...清除阵列,因此可以发出:

set -A my_array

重新使用数组:

set -A my_array $(command to generate new data set)

例如:

$ cd /
$ set -A my_array $('ls' -tr sys)
$ echo ${my_array[@]}
kernel devices module bus class fs block power firmware dev
$ set -A my_array $('ls' -tr var)
$ echo ${my_array[@]}
opt crash X11R6 mail games yp spool lib adm cache lock tmp log run
$ set -A my_array
$ echo ${my_array[@]}
  <<no output>>

或者您可以使用循环结构,例如:

for i in ${!my_array[@]}
do
    unset my_array[${i}]
done

例如:

$ set -A my_array $('ls' -tr var)
$ echo ${my_array[@]}
opt crash X11R6 mail games yp spool lib adm cache lock tmp log run
$ for i in ${!my_array[@]}
do
    unset my_array[${i}]
done
$ echo ${my_array[@]}
  <<no output>>