I have script which stores the list of files in an array as shown below
set -A my_array $(ls -tr $INPUT_DIRECTORY/*)
I have to empty this my_array variable to use it for other purpose. I cannot declare another new array.
Is there any way to clear the content of the array and reuse it again?
Thanks in advance.
Advertisement
Answer
Since you’re already using set -A … to clear the array you could issue:
set -A my_array
To re-use the array:
set -A my_array $(command to generate new data set)
For example:
$ 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>>
Or you could use a looping construct, eg:
for i in ${!my_array[@]}
do
unset my_array[${i}]
done
For example:
$ 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>>