<p>改变</p>
<pre class="lang-sh prettyprint-override"><code> if [ "$pkgPlatform" == 'arch' ]; then
pkgPlatform=archPkgs
elif [ "$pkgPlatform" == 'npm' ]; then
pkgPlatform=npmPkgs
</code></pre>
<p>到</p>
<pre class="lang-sh prettyprint-override"><code> if [ "$pkgPlatform" == 'arch' ] || [ "$pkgPlatform" == 'npm' ]; then
declare -n platformPkgs="${pkgPlatform}Pkgs"
</code></pre>
<p>这使得<code>platformPkgs</code>成为所需数组的<strong>nameref</strong>。然后像普通数组变量一样使用<code>platformPkgs</code></p>
<p>然后改变</p>
<pre class="lang-sh prettyprint-override"><code> if [ "$pkgAction" == 'add' ]; then
$pkgPlatform+=pkgName
break
elif [ "$pkgAction" == 'remove' ]; then
unset "$pkgName"[$pkgPlatform]
break
</code></pre>
<p>到</p>
<pre class="lang-sh prettyprint-override"><code> if [ "$pkgAction" == 'add' ]; then
platformPkgs+=( "$pkgName" )
break
elif [ "$pkgAction" == 'remove' ]; then
## not this => unset "platformPkgs[$pkgName]"
# first, iterate through the array to find
# the index for this value $pkgName,
# then, unset "platformPkgs[$index]"
# or rewrite the array except for the element at that index:
# platformPkgs=( "${platformPkgs[@]:0:index}" "${platformPkgs[@]:index+1}" )
break
</code></pre>