$ cat pids | parallel -j0 cat && echo OK!
cat: 23: No such file or directory
cat: 45: No such file or directory
cat: 67: No such file or directory
cat: 89: No such file or directory
cat: '': No such file or directory
$ cat pids | parallel -j0 echo && echo OK!
23
45
67
89
OK!
параллель не останавливается при первой ошибке
$ cat pids | while read pid; do cat \"$pid\" || break; done
cat: '"23"': No such file or directory
$ cat pids | while read pid; do echo \"$pid\" || break; done
"23"
"45"
"67"
"89"
""
только bash :break означает перерыв
(Пустая последняя строка и статус возврата реализованы по-разному)
Или ты это имеешь в виду:
cat pids | while read pid; do cat \"$pid\" || break; done
Я признаю, что это не выводит статус, но это вытекает немного из недостающих спецификаций.
Когда я запускаю цикл с echo
, он просто заключает в кавычки строки от файла "pids" до EOF. С cat
И ||break
останавливается с ошибкой "нет файла". Без перерыва печатает много ошибок "нет файла". Так это работает? Теперь я просто добавил && echo OK
, потому что эта команда действительно возвращает 0 или 1, что соответствует сообщениям об ошибках.
Файл "pids", конечно же, содержит pid. Конвейерная обработка этого файла имитирует ПОТОК строк с одиночными идентификаторами, который продолжается до тех пор, пока не остановится. Неопределенный, как вы говорите.
Извините, но этот вопрос абсолютно не ясен. Неопределенно запущены разные тесты на разных PID.
Если у вас есть только какие-либо тесты, цикл в порядке.
Если вы имеете в виду это наполовину серьезно, то вы должны организовать свой алгоритм. Разбейте логику на более мелкие шаги. Сделайте это проще для вас и процессора.
Ваше если а, то если б, то если с, то если d, то, ну, тогда ВСЕ ОК может быть на грани ОК для одной экстремальной ситуации. Я не думаю, что у вас есть тот, где этот подход полезен.
Существует несколько вариантов netcat. Установите версию netcat, разработанную nmap.org
В моей системе Ubuntu есть 2 пакета netcat
и ncat
. Один из nmap — ncat
и поддерживает опцию -e
. Другой нет.
Вам нужно найти правильный пакет для вашего дистрибутива.