Этот ответ для Bash.
Для этого можно использовать ловушку. Это иллюстративный пример. Чтобы продолжить цикл, используйте Ctrl+c. Однако нет никакого способа остановить скрипт, кроме как закрыть терминал или убить его из другого терминала.
#!/bin/bash
trap ps SIGINT
for i in a b c d; do
for j in w x y z; do
echo ----$i$j------ && ping stackexchange.com -c 10
done
done
exit
Ваш скрипт будет выглядеть примерно так (после некоторых моих улучшений), но обратите внимание, что он не был протестирован:
#!/bin/bash
trap '' SIGINT
for ip in $(cat ip_list); do
mkdir $ip && cd $ip &&
for vuln in $(snmap http);do
nmap --script=$vuln $ip -oN $vuln
done &&
cd ..
done
Изменения, которые я ввел, такие как &&
, предотвращают ввод логических путей, которые могут привести к ошибке. Если возможно, безопаснее накладывать такие ограничения. Когда это сформулировано так:
mkdir $ip; cd $ip;
если каталог не может быть создан, то cd
приводит к ошибке.
При такой постановке вопроса:
mkdir $ip && cd $ip
если каталог по какой-то причине не был создан, то попытка cd
не выполняется. Если все команды от mkdir $dir
через cd $dir
до cd ...
соединить в цепочку с &&
, то логика понятна и структура не нарушится. Если вы используете ;
и не создадите каталог, то вы не сможете в него войти, но вы, возможно, не сможете не перейти к ...
.