побег из цикла Linux для цикла - PullRequest
1 голос
/ 10 июня 2010

Я делаю что-то вроде этого:

for f in `find -iname '*.html'`; do scp $f remoteserver:$f; done;

Я прошел около 3 из 1000 файлов и решил, что хочу прервать операцию.

CTRL + C только экранирует приглашение входа в SCP и переводит меня к следующему, а не экранирует цикл for.

Есть ли лучший способ, чем нажать CTRL + C 9997 раз?

Спасибо!

Ответы [ 4 ]

5 голосов
/ 10 июня 2010

Вы должны научиться проверять состояние выхода запущенных процессов, особенно если вы запускаете их в цикле:

for f in `find -iname '*.html'`; do scp $f remoteserver:$f || break; done;

Обратите внимание на || break бит.

2 голосов
/ 10 июня 2010

Одновременно нажмите ctrl + z , чтобы приостановить задачу, затем используйте kill %1, чтобы убить эту задачу.

Вы можете обнаружить, что xargs - лучший способ решения этой задачи. Или rsync. Или даже сжатие HTML-файлов в архив и scp -ing это. Но это, вероятно, не по теме для StackOverflow.

1 голос
/ 10 июня 2010

Используйте встроенную функцию bash 'trap', которая ловит сигналы. Таким образом, вы можете перехватить Ctrl-C и сделать ... exit:)

my2c

0 голосов
/ 10 июня 2010

Хм .. ударяя CTRL + C в очень быстрой последовательности, похоже, добьется цели ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...