$ pdftk "$(some command)" output t.pdf
При этом запускается какая-то команда, затем двойные кавычки инкапсулируют вывод в одно «слово».Независимо от того, какая команда, результатом будет то, что pdftk
получит единственный аргумент, содержащий полные выходные данные команды.
Синтаксический анализ ls
обычно считается плохой идеей.
Как предлагает @ RavinderSingh13, простое указание *.pdf
(или даже *
) может решить вашу проблему.Оболочка выполняет «глобализацию» для расширения подстановочных знаков и правильно разбивает их на «слова»:
$ pdftk * output t.pdf
Если вы выполняете какую-либо команду, отличную от ls
, которая выводит списокимена файлов, вам нужно быть немного осторожным, чтобы вы указали в правильной точке.
Некоторые переносимые способы сделать это (с некоторыми предположениями о выводе команды) приведены в разделе «Использование приложения» Спецификация POSIX для xargs .
В системах с версиями утилит GNU (например, find
и xargs
) предусмотрен более надежный механизм с использованием нестандартных -print0
, -0
и связанные параметры команды, которые предполагают, что символ NULL является (единственным) специальным символом, используемым для разделения элементов вывода команды.