Я пытаюсь создать функцию bash с именем url2pdf:

wget -O "$1" | /System/Library/Printers/Libraries/convert | open -a Preview

Однако всякий раз, когда я пытаюсь выполнить это, я получаю:

HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Saving to: “STDOUT”

[ <=>                                                                          ] 0 --.-K/s   in 0s      


Cannot write to “-” (Broken pipe).

Я предполагаю, что с перенаправлением канала что-то не так. Какие-либо предложения?

1 ответ1

0

программе convert не нравятся потоки STDIN, которые приходят из каналов:

ian-cs-macbook-pro:temp ianc$ echo "Hello world" | /System/Library/Printers/Libraries/convert
Usage: convert [ options ]

Options:
...snipped...

Попробуйте вместо этого использовать TMPDIR:

function url2pdf {
    HTML=$TMPDIR`basename $1`'.html'
    PDF=`basename $1`'.pdf'
    wget -O $HTML $1
    /System/Library/Printers/Libraries/convert -f $HTML -o $PDF
    rm -f $HTML
    open -a Preview $PDF
}

Это грубо, но это работает. Вы можете настроить по своему вкусу сохранение PDF на диск или нет.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .