Процесс исполнения в конвейере - PullRequest
0 голосов
/ 04 сентября 2018

Этот код ничего не показывает (если date.txt существует):

date> date.txt | cut

Вопросы:

  • Почему мы не можем использовать date.txt, если в нем есть перенаправленный стандартный вывод?
  • Это похоже на то, что cut принимает date.txt в качестве входных данных до того, как он будет записан / перезаписан? Является ли последовательность выполнения команды слева для записи в конвейер, или все команды выполняются одновременно и просто ждут ввода из стандартного вывода предыдущей команды конвейера?

[извинения за грамматические и терминологические ошибки и

date | tee date.txt | cut --delimiter '' --fields 1

работает, это известно.

]

enter image description here

1 Ответ

0 голосов
/ 04 сентября 2018

Команды в конвейере выполняются одновременно. Поэтому, когда вы пишете

date > date.txt | cut --delimiter '' --fields 1 < date.txt

cut может попытаться прочитать файл до того, как date запишет в него, и нечего читать. Нет необходимости в конвейере, если вы используете файл для связи, просто пишите команды последовательно.

date > date.txt 
cut --delimiter '' --fields 1 < date.txt
...