我正在尝试根据“123”形式的脚本参数从bash中的数组中动态删除元素,其中参数中的每个单个数字都被假定为应该删除的数组的索引。
#!/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”上下文中起作用?