Я хочу использовать команды bash во вложенных циклах в make-файле, мой текущий код не работает. Может ли кто-нибудь направить меня, в чем может быть проблема. Я написал простой код в тестовой цели. Здесь я хочу перейти в каталог DIR_S/case1 и скопировать файл rtt.csv в другой каталог 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

Нет ошибки при запуске, но я вижу это сообщение и строка не выполняется

/bin/sh: ((: cd /Users/Umar/Desktop/dummy1/case 1: division by 0 (error token is "/Umar/Desktop/dummy1/case 1")

Я заметил, что если

cd /Users/Umar/Desktop/dummy1/case 1

в командной строке это не будет работать из-за пробела, я также обновил приведенную выше строку

((cd $(DIR_S)/case\ $$cn)) ;  \ 

в

((cd $(DIR_S)/case\\ $$cn)) ;  \

но все же эта строка не выполняется. Может кто-нибудь подсказать мне, как использовать команды bash во вложенных циклах в Makefile. (Я упомянул вложенные циклы, поскольку собираюсь добавить еще один цикл после этого цикла)

1 ответ1

0

Проблема, казалось, была решена, когда я использую команды bash без ((и)).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .