くらげになりたい。

くらげのようにふわふわ生きたい日曜プログラマなブログ。趣味の備忘録です。

BashでStringから配列に変換してfor文で回す

久しぶりにbashの配列を扱おうとして、??となったので、その備忘録。

改行で区切れば、配列を使わなくても、for文で回せる!

いつもは、こんな感じで、for文でまわしてた

#!/bin/bash

text='
aaa
bbb
ccc
'

for i in ${text}; do
  echo $i
done

でも、2つのリストにある文字列を同じインデックスで扱いたいときには、配列にしないといけない。。。

でも、2つのリストを扱いたくなって、困った。

やりかたはこんな感じ。

#!/bin/bash

text='
aaa
bbb
ccc
'

text2='
AAA
BBB
CCC
'
## 配列に変換
array_text=(`echo $text`)
array_text2=(`echo $text2`)

## for文でくるくるする
for (( i = 0; i < ${#array_text[@]}; ++i )); do
  t1=${array_text[$i]}
  t2=${array_text2[$i]}
  echo "### $t1 -> $t2"
done
  • 改行で区切った文字列をcatすると配列にできる
  • ${#<変数名>[@]で配列のサイズを参照できる
  • インデックスを使った配列要素の参照は${<変数名>[<インデックス>]}

もっとスマートな書き方もあると思いますが、とりあえず、目的を達成したのでおしまい!

以上!!

【宣伝】複数言語へ一括翻訳できる文章・単語の管理アプリ『トランスノート』をリリースしました!

f:id:wannabe-jellyfish:20181123102921p:plain:w400

トランスノート|https://trans-notes.net/:plain

アプリやサービスの多言語対応をサポートしてくれるWebサービスです。

メッセージごとにIDをつけれるので、メッセージ一覧の作成・管理に利用できて、
AndoridのXML形式とか、ファイルをそのまま配置できるとこまでやってくれます。

詳しい内容はこちらの記事で。 wannabe-jellyfish.hatenablog.com

参考にしたサイト様