O problema parecia ser resolvido quando eu uso comandos bash sem ((e)).
Eu quero usar comandos bash em loops aninhados no makefile, meu código atual não está funcionando. Alguém pode me guiar o que pode ser o problema? Eu escrevi um código simples no alvo de teste. Aqui, eu quero ir para um diretório DIR_S / case1 e copiar o arquivo rtt.csv para outro diretório DIR_D / rtt /.
test:
cn=1; while [[ $$cn -le 2 ]] ; do \
echo $$cn ; \
((cd $(DIR_S)/case\ $$cn)) ; \
((cp rtt.csv $(DIR_D)/rtt/)) ; \
((cn = cn + 1)) ; \
done
Não há erro quando executo isso, mas vejo esta mensagem e a linha não é executada
/bin/sh: ((: cd /Users/Umar/Desktop/dummy1/case 1: division by 0 (error token is "/Umar/Desktop/dummy1/case 1")
Uma coisa que notei foi que, se digitar
cd /Users/Umar/Desktop/dummy1/case 1
na linha de comando não funcionará por causa do espaço, eu também atualizei a linha acima de
((cd $(DIR_S)/case\ $$cn)) ; \
para
((cd $(DIR_S)/case\ $$cn)) ; \
mas ainda esta linha não é executada. Alguém pode me orientar como usar comandos bash em loops aninhados no Makefile. (Eu mencionei loops aninhados como eu pretendo adicionar outro loop após este loop)
O problema parecia ser resolvido quando eu uso comandos bash sem ((e)).