Leave a comment

Comments 5

kvazimoda24 October 7 2019, 20:31:02 UTC
Может Python?

Reply


vlad_rulez October 7 2019, 21:38:54 UTC
Дяденька, не ебите себе мозг, берите цикл for и извращайтесь как вам таки надо.
Ты вполне можешь победить xargs в своей ОС, только чтобы когда такой финт понадобится в следующий раз в другом месте узнать что с местной реализаций xargs так не работает.
For в баше одинакого работает везде.
xargs - хорошо, когда надо по быстрому запустить 50 копий процесса одновременно или там просто что-то сделать.
Как только задача усложняется и команда требует перенаправления при динамических входных параметрах - время доставать for
Самое главное, что потом при просмотре хистори чужими людьми ни у кого инфаркта не будет.

Кстати еще одно эмпирическое правило: если скрипт на баше уже больше двух экранов текста и еще не закончен - время его переписывать на питоне.

Reply

roscha_hacker October 8 2019, 15:56:33 UTC
+1 за цикл с while и действием после done

Reply


gutt_tlt October 8 2019, 05:29:55 UTC
Если так уж хочется извратиться с xargs и число аргументов гарантированно не меньше единицы, то можно сделать
while true; do echo "5"; done | xargs -P 2 -n 3 /bin/bash -c '/bin/sleep $0 $* | cat >somefile'
Если аргумента не будет, то $0 отрезолвится в /bin/bash.
Но, как правильно заметил предыдущий оратор. xargs -- вещь на любителя, и "взять три строчки из файла начиная с энной" можно sed'ом, awk'ом или даже head + tail.

Reply

klink0v October 8 2019, 19:13:09 UTC
Ха-ха. Какая магия. Интересно.

Но я вышел из положения, рекурсивно вызывая тот же самый скрипт с параметром, наличие которого проверяю сразу при старте. Так даже удобнее. Всё получилось в точности как я и хотел.

А xargs мне нравится. В основном я его начал применять ради многопоточной обработки большого (очень большого) массива входящих файлов.

Reply


Leave a comment

Up