Программа Go, по-видимому, явно проверяет, является ли стандартный ввод каналом, и если это не так, она завершается с диагностическим сообщением:
fi, err := os.Stdin.Stat()
if err != nil {
fatal(err)
}
if fi.Mode()&os.ModeNamedPipe == 0 {
usage()
os.Exit(1)
}
Другое различие между двумя командными строками заключается в том, что в конвейере две команды выполняются одновременно. Левая команда записывает, а правая команда читает. Если одна из них слишком медленная для другой (с точки зрения чтения/записи ), более быстрая программа будет временно блокироваться, пока более медленная не догонит ее.
В случае, когда две команды выполняются с &&
в -между ними, они, очевидно, выполняются друг за другом. Вторая команда не запустится, пока первая команда не завершится и не завершится с нулевым статусом выхода.
Пробовали ли вы отключать dhcp на eno2?
allow-hotplug eno2
iface eno2 inet manual