Как использовать неограниченный список аргументов команды в оболочке bash?

Как использовать неограниченный список аргументов команды в оболочке bash?

Я сталкиваюсь с проблемой "слишком длинный список аргументов" при использовании команды в оболочке (в моем случае bash). Большинство предложений по обходу этой проблемы предлагают использовать findили какой-либо вариант, предполагая, что это длинный список файлов, который превышает ограничение длины аргумента.

Однако в моем случае это не список файлов, а список аргументов. Я использую программное обеспечение для обработки звука soxи мне нужно иметь возможность использовать столько аргументов командной строки, сколько я хочу (в зависимости от длины входного аудиофайла). Так, например, короткая версия нужной мне команды может выглядеть так:

sox input.wav output.wav trim 0 1 gain 1 : trim 0 1 gain 2 : trim 0 1 gain 1

Но вместо трех пар аргументов trim/gain я хочу, чтобы это продолжалось столько, сколько я захочу (представьте, что это просто продолжается с trim 0 1 gain X.

Есть ли способ написать функцию для генерации этого, чтобы обойти ограничение на длину аргумента? Я пробовал несколько вариантов, но, похоже, не могу понять.

решение1

Если решение, специфичное для , soxудовлетворит ваши непосредственные потребности, я вижу на sox(1)странице руководства, что у него есть опция --effects-file, которая позволяет вам указать все ваши изменения в файле вместо аргументов командной строки.

Связанный контент