首先,这是我在本论坛的第一个问题,如果格式混乱请原谅。其次,我没有编写太多的bash脚本,并且我编写的脚本之间的时间相当长。
话虽如此,这是我的问题。
在Bash中是否可以做到像这样清除数组 $array 的内容:
$array=()
基本上这就是我想要做的事情。我有一个变量,其中包含数组变量名称:
array1=()
array2=()
arrayList="array1 array2"
# In a function far far away
for array in $arrayList
do
eval arr=("\"\${$array[@]\"")
for index in ${!arr[@]}
do
echo "${arr[$index]}"
done
# Here is the big "?", I like to clear the array that $array refers to.
$array=()
done
我的数组包含了包含空格的字符串,因此我使用eval
语句。不确定是否需要它,但至少它是有效的。脚本基本上按照我想要的方式运行,但我需要清除$arrayList
中的数组,并且我不想在某个地方硬编码它,即使那样也很容易。
eval
不是推荐的方法,因为你可以注入一些不好的东西,甚至在不小心执行时自己做一些愚蠢的事情。虽然这个脚本只会被我自己使用,但我会考虑换另一个解决方案。 - Qben