変数から一部を取得

shにおいて表題の通り。Javaでいうところのsubstring()、PHPでいうところのsubstr()に当たることをshでやる。

■ 環境

  • sh

■ 変数の切り出し

Javaのsubstring()やPHPのsubstr()と同様に、切り出しの開始位置と終了位置を指定する。終了位置を指定しなければ末尾まで取得される。

${変数:開始位置:終了位置}

■ 例

例として下記のような文字列があるとする。

#!/bin/sh
TEST=",192.168.33.11:2181,192.168.33.12:2181,192.168.33.13:2181"

これはZooKeeperの接続文字列を配列等から生成するような場合。変数の先頭に”,“が入ってしまっているが、これは不要である。配列等からループの1回目だけ”,“を抜くという処理を書くよりは、変数から1文字目だけを抜いた状態で次の処理に渡したい。

#!/bin/sh
TEST=",192.168.33.11:2181,192.168.33.12:2181,192.168.33.13:2181"
echo ${TEST:1}

これを実行すると、下記の結果が得られる。

$ ./test.sh
192.168.33.11:2181,192.168.33.12:2181,192.168.33.13:2181
$

ループの中で、何回目のループであるかをチェックしてif文で条件分岐するよりも楽に書くことができて重宝している。

以上。

■ 関連