#!/bin/bash
c21=Apples
c31=Oranges
c41=Pears
movelist=(c21 c31 c41)
for movecheck in ${!movelist[@]} ; do
eval "declare movecontents=$"${movelist[$movecheck]}""
if [ "$movecontents" != "Oranges" ] ; then
"${movelist[$movecheck]}"=""
fi
done
echo ${movelist[@]}
Моя цель состоит в том, чтобы строка 9 установила значение / в массиве, чтобы обнулить / удалить его из массива, следовательно, =""
.Однако с таким кодом, как он есть, потому что ${movelist[$movecheck]}
приводит к переменной, c*1
, при объявлении его как нулевого, он выплевывает c41= command not found
.Я попытался использовать eval & Declare: eval "declare "${movelist[$movecheck]}"=''"
, но при этом вместо удаления значения из массива он изменяет фактическую переменную.Таким образом, результат для приведенного выше примера кода должен иметь массив movelist
, содержащий (c21 c41)
в конце.Приветствия.