Я пытаюсь динамически удалять элементы из массива в bash на основе аргумента сценария в форме '123', где предполагается, что каждое однозначное число в аргументе является индексом массива, который должен быть удален.
#!/bin/bash
# Doesn't delete an element.
ARRAY=(a b c)
while getopts ":a:" opt; do # run e.g. 'thisscript.h -a 0'
case $opt in
a)
echo -n $OPTARG |\
while read -n 1 c; do
unset ARRAY[$c]
done
;;
esac
done
echo ${ARRAY[@]}
# Deletes an element successfully.
ARRAY=(a b c)
unset ARRAY[0]
echo ${ARRAY[@]}
# Deletes an element successfully.
ARRAY=(a b c)
n=0
unset ARRAY[$n]
echo ${ARRAY[@]}
Напишите это, например, Файл tmp.sh, chmod + x tmp.sh, чтобы сделать исполняемым, затем запустите 'tmp.sh -a 0'.
Почему не работает первый метод удаления элементов массива и как я могу заставить его работать в контексте read -n 1?