Skip to content

Latest commit

 

History

History
48 lines (32 loc) · 1009 Bytes

09-ignore-loop.md

File metadata and controls

48 lines (32 loc) · 1009 Bytes

Ignore Loop

たとえば、いくつかの要素に対して同じことをしたいとき、シェルスクリプトではforループを使って

SITES="example.com voyagegroup.com voyagegroup.jp"

for v in $SITES
do
  ping -c 1 $v
done

こんな感じにしそうです。

これをそのまま Makefile にすると

SITES=example.com voyagegroup.com voyagegroup.jp

ping:
	for v in $(SITES); do ping -c 1 $$v; done

こんな感じになりがちですが、ここはもう少しかっこよくできます。つまり:

SITES=example.com voyagegroup.com voyagegroup.jp

all: $(SITES)

$(SITES):
	ping -c 1 $@

ターゲット名がしっくりこないときは、少し手間がかかるけど、名前を変えてあげても良いかもしれない。

SITES=example.com voyagegroup.com voyagegroup.jp
ping-sites= $(patsubst %,ping-%,$(SITES))
all: $(ping-sites)

$(ping-sites):
	ping -c 1 $(patsubst ping-%,%,$@)

便利。