2つのこと、最初はこれがこのフォーラムの最初の質問です。書式設定が全面的に行われていれば謝ります。二番目に、たくさんのbashスクリプトを書いていないので、私が作ったスクリプトの間にかなり長い時間がかかる傾向があります。
それは私の質問です。
は、(クリア配列$配列が含まれている)bashでこのような何かをすることが可能です:
$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
の配列をクリアする必要があります。それは簡単ですが、どこかでハードコードしないでください。
ありがとうございます。
http://mywiki.wooledge.org/BashFAQ/048を参照してください。re:eval - short formの使用は実際にはアドバイスされていないことです。 –
リンクありがとう!私は 'eval'はあなたがそれに悪いものを注入することができるので、あなたが' evel'を慎重にしなければ、あなた自身が何かばかげたものを行うことができるので、推薦された方法ではないことを読んでいます。このスクリプトは自分でのみ使用されますが、私は別の解決策のためにそれをスワップすることを検討します。 – Qben
あなたが本当に望むものは、連想配列です。彼らはバッシュ4で利用可能です。 – Dunes