シェルスクリプトで、配列を関数に渡す、配列を関数より受け取る

こんにちは。itouです。

今回は、シェルスクリプト(bash)でのTIPSです。

下記のようにすることで
シェルスクリプトで、配列を関数に渡す、配列を関数より受け取ることができます。

配列を関数に渡す際のポイントは、「shift」というコマンドで引数を1つずつずらしている箇所です。
配列が格納された場所までずらして、最後「($@)」で変数に格納しています。

[code]
#!/bin/sh

function func ()
{
  local f_a=$1
  shift
  local f_b=($@)

  local f_ret=()

  for f_c in ${f_b[@]}
  do
    f_ret+=($f_a-$f_c)
  done

  echo ${f_ret[@]}
}

# START
# 関数funcに2と配列(3,2,5)を渡して、配列(2-3,2-2,2-5)を受け取り標準出力に表示

a=2
b=(3 2 5)

ret=(`func ${a} ${b[@]}`)

for c in ${ret[@]}
do
  echo ${c}
done
[/code]

■実行結果
2-3
2-2
2-5