print:
@for number in 10 11 12 13 14 15; do \
( echo "Number: $$number" ); \
( break ); \
( echo Break not working ); \
done
我得到的输出
Number: 10
Break not working
Number: 11
Break not working
Number: 12
Break not working
Number: 13
Break not working
Number: 14
Break not working
Number: 15
Break not working
我需要的输出:
Number: 10
在发布的代码中,'for'循环在外壳程序中(bash?)执行,而不是通过'make'实用程序执行。
bash脚本的问题在于'break'语句正在子进程中运行-因为它位于括号'(break')内。按照bash手册,控制流命令(如果返回,则为...)应在“主”进程中执行。无法将它们拆分为多个进程。
删除'('应该可以解决问题-循环将在打印'Number:10'之后停止。
print:
@for number in 10 11 12 13 14 15; do \
( echo "Number: $$number" ); \
break ; \
( echo Break not working ); \
done
作为旁注,无需将'echo'语句放在'(...)'中。它会使脚本分叉不必要的实例或bash。