Не встановлюючи нічого до xargs


14

У мене є сценарій, який може за певних обставин не мати нічого в stdout. В кінці сценарію я передаю рядки, які я маю, до іншої команди за допомогою xargs. Моя проблема полягає в тому, що коли у stdout нічого немає, я отримую типове повідомлення про помилку "Використання: програма arg1 arg2".

Як я можу цього уникнути?


8
Перемістіть відповідь у відповідь та прийміть власну відповідь. Таким чином ваші відкриття будуть корисні для інших людей. meta.unix.stackexchange.com/questions/809/…
andcoz

1
Тоді не вистачало балів. Зробимо це зараз.
Річард

Відповіді:


13

Вам потрібні -rабо --no-run-if-emptyваріанти.

Майте на увазі, що саме цю поведінку важко зробити кросплатформою. Версії BSD xargsзапускаються -rза замовчуванням. Версія GNU потрібна. Версія FreeBSD xargsігнорує -rпрапор для сумісності з GNU. Версія Mac OS X навіть не приймає прапор і видає помилку illegal option.

Тоді ви можете скористатися виявленням ОС на основі $OSTYPEнаписання міжплатформового сценарію. Ще краще спробуйте виявити поведінку xargsсебе. Запустіть його, -rі якщо це не вдалося (код статусу> 0), запустіть його без -r.


3

Урок, чому ви повинні читати сторінки чоловіка ...

-rАбо --no-run-if-emptyпрапори друже мій.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.