Кто решил, что математическая библиотека bc будет определять синус, косинус и арктангенс?

тл;др;вот как это можно было сделать переносимым, без -Iи других ломаных причудливых опций:

$ echo a b c d f g | xargs -n 2 sh -c 'echo "$@" LAST' sh
a b LAST
c d LAST
f g LAST

$ seq 1 100000 | xargs sh -c 'echo "$#" LAST' sh
23692 LAST
21841 LAST
21841 LAST
21841 LAST
10785 LAST

Проблема с опцией -Iзаключается в том, что она нарушена по замыслу, и ее невозможно обойти:

$ echo a b c d f g | xargs -I {} -n 1 echo {} LAST
a b c d f g LAST
$ echo a b c d f g | xargs -I {} -n 2 echo {} LAST
{} LAST a b
{} LAST c d
{} LAST f g

Но они, вероятно, застрахованы, потому что так сказано в стандарте.:

-I replstr ^[XSI] [Option Start] Insert mode: utility is executed for each line from standard input, taking the entire line as a single argument, inserting it in arguments for each occurrence of replstr.

И ничего не говорится о взаимодействии с опциями -nи -d, так что они вольны делать что хотят.

Вот как это происходит на (более старой )FreeBSD, менее неожиданной, но не -стандартной:

fzu$ echo a b c d f g | xargs -I {} -n 2 echo {} LAST
a b LAST
c d LAST
f g LAST
fzu$ echo a b c d f g | xargs -I {} -n 1 echo {} LAST
a LAST
b LAST
c LAST
d LAST
f LAST
g LAST
8
03.06.2021, 02:35
0 ответов

Теги

Похожие вопросы