変数の一部を置換

shにおいて表題の通り。先日のエントリに続けて似たネタ。Javaにおけるreplace()、PHPにおけるstr_replace()に相当。

■ 環境

  • sh

■ 変数の置換

Javaにおけるreplace()やPHPのstr_replace()と同様に、変換前文字列と、変換後文字列を指定する。

${変数//変換前文字列/変換後文字列}

ちなみに上記は合致した文字列全てを置換する。一番最初に合致したものだけを変換対象とするのであれば下記のようになる。

${変数/変換前文字列/変換後文字列}

変数自体はその後も利用するので、元のままの文字列を保持していてほしい。けれどもここの処理だけは文字列を少しいじって使用したい、という場合に便利である。

■ 例

ZooKeeperの接続文字列を元にfor文を回したい、という時に使用した。

#!/bin/sh

ZOOKEEPER="192.168.33.11:2181,192.168.33.12:2181,192.168.33.13:2181"

for ZK in ${ZOOKEEPER//,/ }
do
  :
done

上記では”,”を” “に変換しfor文を回すようにしている。for文の中では${ZK}で”192.168.33.11:2181″が取得できるであろう。

以上。

■ 関連