環境変数のDOCKER_HOSTの値を見て、その値によって処理を分岐させたりしたいなと思って調べたのでメモ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/bin/bash -eu

SEARCH := localhost 127.0.0.1
is_local := $(words $(filter $(DOCKER_HOST), $(SEARCH)))

# 未指定
ifeq ($(DOCKER_HOST),)
FOO="empty"
# ローカルではない
else ifeq ($(is_local),0)
FOO="not local"
# ローカル
else
FOO="is local"
endif

hoge:
@echo ${FOO}

@echo ${FOO}の行はハードタブに置き換えて下さい

実行すると、SEARCHにセットしてある、 localhost127.0.0.1にマッチングする場合だけ is localと出力されます

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$ echo $DOCKER_HOST

$ make hoge
empty
$ DOCKER_HOST= make hoge
empty

$ DOCKER_HOST=localhost make hoge
is local
$ DOCKER_HOST=127.0.0.1 make hoge
is local

$ DOCKER_HOST=192.168.2.200 make hoge
not local
$ DOCKER_HOST=example.com make hoge
not local

$ export DOCKER_HOST=localhost
$ make hoge
is local