W poniższym poleceniu cat pobiera zawartość here-doc i przekierowuje ją do pliku o nazwie conf:
cat > conf << EOF
var1="cat"
var2="dog"
var3="hamster"
EOF
Jak zrozumieć kolejność poleceń tutaj? Czy bash
najpierw przetwarza wszystko inne (część doc tutaj) i jako ostatni krok wygląda na > conf
część?
bash
shell
here-document
Jaskółka oknówka
źródło
źródło
cat > file_name << blah
jest to, że przed wykonaniemcat
na stdout skorupy jest podłączony do pliku o nazwiefile_name
a następnie stdin powłoki jest połączony tutaj-doc ?open
było wcześniejdup2
.Cóż, dowiedzmy się:
Dang. Wydaje mi się, że najpierw trzeba wykonać tę
>"$file"
część. Ale co gdyby...?...żaden błąd...?
Jak się wydaje, kolejność ma znaczenie.
źródło
Podczas
bash
tworzenia procesu do uruchomieniacat
, otwiera się onconf
do zapisu na deskryptorze pliku 1 i otwiera plik tymczasowy (dla dokumentu tutaj) do odczytu na deskryptorze pliku 0, przedexec
uruchomieniem programu. W tym przypadku tak naprawdę nie ma znaczenia, w jakiej kolejności są wykonywane te działania.Kolejność staje się znacząca, gdy deskryptory plików zostaną ponownie przypisane, np
2>&1
. Za pomocą .źródło