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文で条件分岐するよりも楽に書くことができて重宝している。
以上。