自身の備忘を兼ねて記載を行っています。
「とりあえず動いた」程度のソースなどもございますので参考程度にブラシアップ頂けると幸いです。
また、誤りやもっとよいコーディングやきれいな書き方があるなどご指摘頂けるととてもうれしいです。
今回のお題
別のお題で作成した構造体、ファンクションに渡してそちらで処理させたいと思い作成
(普通に引数として渡すと、第一引数、第二引数・・・etc となるため)
- 別のお題:Bashで文字列の構造体を使いたい
では、ソースです。
sample02.sh
# ! /bin/bash
# 構造体
LOOP_LISTS=(
ABCDEFG
hijklmn
1234567
あいうえお
)
# 構造体を使って処理を行わせたいファンクション
function fLoopEcho () {
# 引数の1つ目(構造体の名前)を変数「arrayname」に格納
local arrayname=$1
# evalコマンドを使って文字列を評価
# (今回の場合は構造体名から構造体自体を取得するために利用)
eval ref=\"\${$arrayname[@]}\"
i=1
# 構造体の中身をループで一つづつ表示
for STRUCT_LIST in ${ref[@]}; do
# 同一の処理(今回は表示)
echo "${i}:${STRUCT_LIST}"
let i++
done
return
}
# メイン処理
# ファンクションの呼び出し元
# !!! 構造体としてではなく名前の文字列として渡す
fLoopEcho LOOP_LISTS
実行結果
$ sh sample01.sh
1:ABCDEFG
2:hijklmn
3:1234567
4:あいうえお
2番目指定:hijklmn