1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Bashで文字列の構造体をファンクションに渡したい

Posted at

自身の備忘を兼ねて記載を行っています。
「とりあえず動いた」程度のソースなどもございますので参考程度にブラシアップ頂けると幸いです。
また、誤りやもっとよいコーディングやきれいな書き方があるなどご指摘頂けるととてもうれしいです。

今回のお題

別のお題で作成した構造体、ファンクションに渡してそちらで処理させたいと思い作成
(普通に引数として渡すと、第一引数、第二引数・・・etc となるため)

では、ソースです。

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
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?