Подтвердить что ты не робот

Сделать: как продолжить выполнение команды?

Команда $ make all дает ошибки, такие как rm: cannot remove '.lambda': No such file or directory, поэтому она останавливается. Я хочу, чтобы он игнорировал ошибки rm-not-found-errors. Как я могу принудительно сделать?

Makefile

all:
        make clean
        make .lambda
        make .lambda_t
        make .activity
        make .activity_t_lambda
clean:
        rm .lambda .lambda_t .activity .activity_t_lambda

.lambda:
        awk '{printf "%.4f \n", log(2)/log(2.71828183)/$$1}' t_year > .lambda

.lambda_t:
        paste .lambda t_year > .lambda_t

.activity:
        awk '{printf "%.4f \n", $$1*2.71828183^(-$$1*$$2)}' .lambda_t > .activity

.activity_t_lambda:
        paste .activity t_year .lambda  | sed -e '[email protected]\[email protected]\t\&\[email protected]' -e '[email protected][email protected]\t\\\\@g' | tee > .activity_t_lambda > ../RESULTS/currentActivity.tex
4b9b3361

Ответ 1

Попробуйте флаг -i (или --ignore-errors). Документация, кажется, предлагает более надежный способ достичь этого, кстати:

Чтобы игнорировать ошибки в командной строке, напишите - в начале текста строки (после начальной вкладки). - отбрасывается до того, как команда будет передана оболочке для выполнения.

Например,

clean:
  -rm -f *.o

Это приводит к тому, что rm продолжается, даже если он не может удалить файл.

Все примеры с rm, но применимы к любой другой команде, вам нужно игнорировать ошибки из (т.е. mkdir).

Ответ 2

Изменить чистоту на

rm -f .lambda .lambda_t .activity .activity_t_lambda

т.е. не запрашивать удаление; не жалуйтесь, если файл не существует.

Ответ 3

make -k (или --keep-going на gnumake) будет делать то, о чем вы просите, я думаю.

Вам действительно нужно найти строку del или rm, которая терпит неудачу, и добавить к ней -f, чтобы эта ошибка не происходила с другими.

Ответ 4

Чтобы заставить make фактически игнорировать ошибки в одной строке, вы можете просто суффиктировать его с помощью ; true, установив возвращаемое значение равным 0. Например:

rm .lambda .lambda_t .activity .activity_t_lambda 2>/dev/null; true

Это приведет к перенаправлению вывода stderr в значение null и последует команде с true (которая всегда возвращает 0, заставляя make полагать, что команда выполнена успешно, независимо от того, что на самом деле произошло), что позволяет продолжить выполнение программы.

Ответ 5

Измените clean, поэтому rm не будет жаловаться:

clean:
    rm -f .lambda .lambda_t .activity .activity_t_lambda

Ответ 6

Вернитесь успешно, заблокировав rm returncode за трубой с помощью команды true, которая всегда возвращает 0 (успех)

rm file | true

Ответ 7

Поместите опцию -f в команду rm.

rm -f .lambda .lambda_t .activity .activity_t_lambda