В следующей команде cat берет содержимое here-doc и перенаправляет его в файл с именем conf:
cat > conf << EOF
var1="cat"
var2="dog"
var3="hamster"
EOF
Как понять порядок команд здесь? Есть ли bash
первые процессы все остальное (здесь-док часть) и в качестве последнего шага выглядит > conf
часть?
bash
shell
here-document
Мартин
источник
источник
cat > file_name << blah
является то , что перед выполнениемcat
на стандартный вывод из оболочки связан с файл с именем ,file_name
а затем стандартный ввод оболочки подключается к здесь-документ ?open
был вызван раньшеdup2
.Что ж, давайте выясним:
Dang. Я предполагаю, что это должно делать
>"$file"
роль сначала тогда. А вдруг...?...Нет ошибок...?
Как оказалось, порядок имеет значение.
источник
Когда
bash
создается процесс для запускаcat
, он открываетсяconf
для записи в файловый дескриптор 1 и открывает временный файл (для данного документа) для чтения в файловом дескрипторе 0 передexec
началом работы с программой. В этом случае не имеет значения, в каком порядке происходят эти действия.Порядок становится значимым, когда файловые дескрипторы переназначаются, например, с
2>&1
.источник