перевести с tcsh на bash вопрос

Я пытаюсь перевести скрипт tcsh на bash. Этот скрипт вызывает gnuplot следующим образом:

#!/bin/tcsh
<script commands>
gnuplot << EOF
set terminal png
<other commands>
plot <args>

Я попытался просто изменить «tcsh» на «bash», но я получаю «здесь-документ в строке x, разделенной концом файла (требуется «EOF»)». Почему это ?


person bob    schedule 26.04.2012    source источник


Ответы (1)


Точно так же, как говорится в сообщении об ошибке: вам нужно закончить здесь документ строкой, заданной при его начале, в данном случае EOF. Вы не можете просто использовать конец файла, чтобы завершить здесь документ.

В качестве примера, вот фрагмент из скрипта, где я использовал вот этот документ:

/usr/bin/gnuplot << GPLOT
set terminal png
set output "$3"
set logscale xy
set xlabel "$1"
set ylabel "$2"
plot "tmp2.$$" notitle
GPLOT

Поскольку я начал документ здесь с GPLOT, bash ищет GPLOT, чтобы указать конец документа здесь.

person Michael J. Barber    schedule 26.04.2012
comment
Извините, я не понимаю, что именно я должен делать. Я на самом деле не понимаю сообщение об ошибке, поэтому я пришел сюда в первую очередь. Должен ли я писать ‹‹ EOF в конце скрипта? Если да, то почему это не требуется для tcsh? - person bob; 26.04.2012
comment
@bob я отредактировал пример. Что касается tcsh, могу только сказать, что он не требуется, потому что его создатели решили разрешить конец файла указывать на конец документа здесь; Я не знаю технической причины, по которой bash отличается, если она вообще есть. - person Michael J. Barber; 26.04.2012
comment
Я предпочитаю баш. Я думаю, что простые частные случаи недостаточно особенные, чтобы нарушать правила мышления... - person mgilson; 26.04.2012