
Я сталкиваюсь с проблемой "слишком длинный список аргументов" при использовании команды в оболочке (в моем случае 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
, которая позволяет вам указать все ваши изменения в файле вместо аргументов командной строки.