我试图在目录(dir)内使用“for”循环并构建一个go代码,然后检查dir名称是否等于dir/task1或dir/task2,是的,将资源/目录与引导程序一起压缩否则仅 zip 引导程序。
当我进行构建时,我发现它不会出现其他情况,请帮忙
build:
for directory in $$(find dir -mindepth 1 -maxdepth 1 -type d) ; \
do env GOOS=linux go build -ldflags="-s -w" -o "bootstrap" $${directory}/main.go ; \
if [ $${directory}='dir/task1' ] || [ $${directory}='dir/task2' ]; then \
zip -r $${directory}.zip bootstrap resources/ ; \
else \
zip $${directory}.zip bootstrap ; \
fi \
done
||
子句中的if
是一个bashism——也就是说,它对于 GNU Bash 之外的许多 Unix shell 都会失败。此外,值得显式地将 -print
传递给 find
,因为如果在调用中没有给出明确的操作,则它的实现不会默认打印。
解决了这两个问题后,这件事似乎对我有用:
$ cat Makefile
all:
for directory in $$(find dir -mindepth 1 -maxdepth 1 -type d -print); do \
echo $${directory}; \
if [ $${directory} = 'dir/task1' -o $${directory} = 'dir/task2' ]; then \
echo "\tif branch"; \
else \
echo "\telse branch"; \
fi; \
done
$ mkdir -p dir/{task1,task2,task3,task4}
$ make --trace all
Makefile:2: target 'all' does not exist
for directory in $(find dir -mindepth 1 -maxdepth 1 -type d -print); do \
echo ${directory}; \
if [ ${directory} = 'dir/task1' -o ${directory} = 'dir/task2' ]; then \
echo "\tif branch"; \
else \
echo "\telse branch"; \
fi; \
done
dir/task1
if branch
dir/task3
else branch
dir/task4
else branch
dir/task2
if branch
$