2015-01-06 3 views
0

Я пытаюсь понять часть сценария оболочки, которая кажется мне очень запутанной.Команда «Конец» в сценарии оболочки

Это фрагмент. Мои вопросы:

a) что делает <<-? Это похоже на стандартное выражение. Мне известно только >, >> и < для перенаправления.

b) Что может означать End? Я предполагаю, что все значения от 'n' до 'somefilename.dat.summary' - это своего рода ввод, который отправляется скрипту 'collapse4', и его вывод перенаправляется на/dev/null, который я узнал, это место, где мы отправляем нежелательные данные.

/usr/can/bin/collapse4<<-End > /dev/null 
n 
n 
1 
9 14 
y 
1 
26 
8 
30 
8 
1 
23 
3 
1 
n 
n 
y 
n 
n 
somefilename.dat 
somefilename.dat.summary 
End 
+2

http://ru.wikipedia.org/wiki/Here_document – Kent

ответ

1

Эта команда посылает блок текста в /usr/can/bin/collapse4 и перенаправляет вывод /dev/null.

Эта структура называется здесь doc. End - это то, как вы называете текст, который вы собираетесь вставить. Как только вы закончите, вы указываете конец блока с тем же самым словом в самом начале новой строки.

Но вы можете это назвать. Это будет делать то же самое:

/usr/can/bin/collapse4<<-HelloJustTesting > /dev/null 
n 
n 
1 
... 
n 
somefilename.dat 
somefilename.dat.summary 
HelloJustTesting 

Более подробная информация в How can I write a here doc to a file in Bash script?:

В сценарии оболочки, вы можете использовать отступы, чтобы сделать код читаемым, однако это может иметь нежелательный эффект отступы текст внутри вашего документа. В этом случае использование использовать <<- (с последующим тире), чтобы отключить ведущие вкладки (Примечание, что для тестирования этого вам необходимо заменить ведущие пробелы с язычком символов, так как я не могу печатать фактические символы табуляции здесь.)

+1

Спасибо @fedorqui – Santhiya

 Смежные вопросы

  • Нет связанных вопросов^_^