まず、これはこのフォーラムでの最初の質問であり、フォーマットがいたるところにある場合はお詫び申し上げます。第二に、私はそれほど多くの bash スクリプトを書いたことがなく、作成するスクリプトの間隔がかなり長くなる傾向があります。
とはいえ、ここで私の質問です。
bash で次のようなことを行うことは可能ですか (Clear array $array contains):
$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
どこかにハードコードするのは簡単ではありません。