What is a heredoc? Here Documents Explained | Linux Terminal 201 - HakTip 179
Spisu treści:
Podczas pisania skryptów powłoki może zaistnieć sytuacja, w której trzeba przekazać wieloliniowy blok tekstu lub kodu do komendy interaktywnej, takiej jak
tee
,
cat
lub
sftp
.
W Bash i innych powłokach, takich jak Zsh, dokument Here (Heredoc) jest rodzajem przekierowania, który pozwala przekazać wiele wierszy danych wejściowych do polecenia.
Składnia pisania HereDoc ma następującą postać:
<< 'DELIMITER' HERE-DOCUMENT DELIMITER
- Pierwszy wiersz rozpoczyna się opcjonalnym poleceniem, po którym następuje specjalny operator przekierowania
<<i identyfikator rozgraniczający.- Możesz użyć dowolnego łańcucha jako identyfikatora rozgraniczającego, najczęściej używane są EOF lub END. Jeśli identyfikator rozgraniczający nie jest cytowany, powłoka zastąpi wszystkie zmienne, polecenia i znaki specjalne przed przekazaniem wierszy dokumentu tutaj do polecenia. znak minus do operatora przekierowania
<<-spowoduje, że wszystkie wiodące znaki tabulacji zostaną zignorowane. Pozwala to na użycie wcięcia podczas pisania tutaj dokumentów w skryptach powłoki. Wiodące białe znaki nie są dozwolone, tylko tabulator.
Blok dokumentu może zawierać ciągi znaków, zmienne, polecenia i dowolne inne dane wejściowe. Ostatni wiersz kończy się identyfikatorem rozgraniczającym. Białe spacje przed ogranicznikiem są niedozwolone. - Możesz użyć dowolnego łańcucha jako identyfikatora rozgraniczającego, najczęściej używane są EOF lub END. Jeśli identyfikator rozgraniczający nie jest cytowany, powłoka zastąpi wszystkie zmienne, polecenia i znaki specjalne przed przekazaniem wierszy dokumentu tutaj do polecenia. znak minus do operatora przekierowania
Podstawowe przykłady Heredoc
W tej sekcji przyjrzymy się kilku podstawowym przykładom używania heredoc.
Heredoc jest najczęściej używany w połączeniu z poleceniem cat.
W poniższym przykładzie przekazujemy dwa wiersze tekstu zawierającego zmienną środowiskową i polecenie
cat
za pomocą dokumentu here.
cat << EOF The current working directory is: $PWD You are logged in as: $(whoami) EOF
Jak widać z danych wyjściowych poniżej, zmienna i dane wyjściowe polecenia są podstawiane:
The current working directory is: /home/linuxize You are logged in as: linuxize
Zobaczmy, co się stanie, jeśli ogranicznik zostanie ujęty w pojedyncze lub podwójne cudzysłowy.
cat <<- "EOF" The current working directory is: $PWD You are logged in as: $(whoami) EOF
Można zauważyć, że gdy cytowany jest separator, interpretacja parametrów nie jest wykonywana, a powłoka zastępuje polecenia.
The current working directory is: $PWD You are logged in as: $(whoami)
if true; then cat <<- EOF Line with a leading tab. EOF fi
Line with a leading tab.
Zamiast wyświetlać dane wyjściowe na ekranie, możesz przekierować je do pliku za pomocą operatorów
>
,
>>
.
cat << EOF > file.txt The current working directory is: $PWD You are logged in as: $(whoami) EOF
Jeśli plik.txt nie istnieje, zostanie utworzony. Podczas używania
>
plik zostanie zastąpiony, a
>>
dołączy wyjście do pliku.
Wejście heredoc może być również przesyłane potokowo. W poniższym przykładzie polecenie
sed
zastąpi wszystkie wystąpienia znaku
l
e
:
cat <<'EOF' | sed 's/l/e/g' Hello World EOF
Heeeo Wored
Aby zapisać dane potokowe w pliku:
cat <<'EOF' | sed 's/l/e/g' > file.txt Hello World EOF
Używanie Heredoc z SSH
Korzystanie z Heredoc jest jednym z najwygodniejszych i najłatwiejszych sposobów wykonywania wielu poleceń w systemie zdalnym przez SSH.
Używając niecytowanego separatora upewnij się, że nie używasz wszystkich zmiennych, poleceń i znaków specjalnych, w przeciwnym razie będą one interpolowane lokalnie:
ssh -T [email protected] << EOF echo "The current local working directory is: $PWD" echo "The current remote working directory is: \$PWD" EOF
The current local working directory is: /home/linuxize The current remote working directory is: /home/user
Możesz także skonfigurować uwierzytelnianie oparte na kluczu SSH i połączyć się z serwerami Linux bez wprowadzania hasła.
Wniosek
W tym przewodniku nauczyłeś się, czym jest
heredoc
i jak go używać w skryptach powłoki.
Jak uruchomić Bash w systemie Ubuntu na Windows 10
Włączenie podsystemu Windows w Linuksie pozwoli na uruchomienie Bash w systemie Ubuntu na Windows 10, skrypty Bash , Narzędzia Linuksa do wiersza poleceń, pierwsze narzędzia w Linuksie.
Tablice Bash
Tablice są jedną z najczęściej używanych i podstawowych struktur danych. W tym artykule omówimy tablice Bash i wyjaśnimy, jak ich używać w skryptach Bash.
Bash for loop
Istnieją 3 podstawowe konstrukcje pętli w skryptach Bash, dla pętli, pętli while i pętli till. W tym samouczku omówimy podstawy pętli for w Bash, a także instrukcje break i continu, aby zmienić przepływ pętli.







