GNU/Linux >> Znalost Linux >  >> Linux

Jak vytvářet dokumenty pomocí skriptů Bash

Někdy potřebujete generovat víceřádkové dokumenty se složitými vnořenými strukturami, jako je YAML nebo HTML, ze skriptů Bash. Můžete toho dosáhnout pomocí některých speciálních funkcí Bash, jako jsou zde dokumenty . „Zde dokument“ je kód nebo textový blok, který lze přesměrovat na skript nebo interaktivní program. Skript Bash se v podstatě stává dokumentem zde, když přesměrovává na jiný příkaz, skript nebo interaktivní program.

Tento článek vysvětluje, jak:

  • Používejte pole, slovníky a čítače
  • Práce s různými typy komentářů
  • Generujte dokumenty YAML a HTML
  • Posílejte e-maily s textem a přílohami

[ Stáhnout nyní:Průvodce systémového administrátora skriptováním Bash. ]

Dokumentace skriptu

Je důležité komentovat své skripty a můžete vytvářet jednořádkové komentáře s # , nebo můžete mít víceřádkové komentáře pomocí kombinace : a < .

Například:

# Toto je jednoduchý komentář:< 

Tato funkce nápovědy pro váš skript je dalším užitečným příkladem:

#!/bin/bashSCRIPT=$(/usr/bin/basename $0)|| exit 100export funkce SCRIPT help_me { /usr/bin/cat< 

Víceřádkový formát je sám o sobě docela užitečný, zvláště při dokumentování složitých skriptů. Existuje však pěkný obrat k používání zde uvedených dokumentů, který jste již možná viděli:

$ /usr/bin/cat<$HOME/test_doc.txtZde je víceřádkový dokument, který chci uložit. Všimněte si, jak mohu uvnitř použít proměnné jako HOME=$HOME.EOF 

Zde je to, co je napsáno v souboru:

$ /usr/bin/cat $HOME/test_doc.txtZde je víceřádkový dokument, který chci uložit. Všimněte si, jak mohu uvnitř použít proměnné jako HOME=/home/josevnz. 

Nyní přejdu k něčemu jinému, abyste mohli tyto znalosti uplatnit.

[ Chcete-li získat další tipy pro Bash, stáhněte si tento Cheat Shell Scripting Cheat Sheet ]

Použití polí a slovníků ke generování souboru YAML inventáře Ansible

Řekněme, že máte následující soubor CSV se seznamem hostitelů na každém řádku obsahujícím servery nebo počítače:

# Seznam hostitelů, označeno groupmacmini2:serversraspberrypi:serversdmaf5:desktopsmac-pro-1-1:desktops 

Chcete převést seznam na následující soubor inventáře Ansible YAML:

--- Všechny:Děti:Servery:Hostitelé:MacMini2:RaspberryPi:VARS:Popis:Linux Servery pro rodinné stolní počítače Nunez:Hostitelé:DMAF5:Mac-Pro-1-1:VARS:Popis:Desktopy pro rodinu Nunezových        

Další omezení:

  • Každý typ systému (počítače nebo servery) bude mít jinou proměnnou s názvem description . Pomocí polí a asociativních polí a čítačů můžete tento požadavek splnit.
  • Pokud uživatel nezadá všechny správné značky, měl by skript selhat. Neúplný inventář není přijatelný. K tomuto požadavku pomůže jednoduché počítadlo.

Tento skript splňuje cíl:

#!/bin/bash:< 

Takto vypadá výstup:

Všechny:Děti:Servery:Hostitelé:MacMini2:RaspberryPi:VARS:Popis:Linux Servery pro rodinné stolní počítače Nunez:Hostitelé:DMAF5:Mac-Pro-1-1:VARS:Popis:Desktopy pro Nunez rodina

Lepším způsobem by mohlo být vytvořit dynamický inventář a nechat jej používat v knize Ansible. Aby byl příklad jednoduchý, neudělal jsem to zde.

Odesílání e-mailů HTML s přílohami YAML

Poslední příklad vám ukáže, jak přenést zde dokument do Mozilla Thunderbird (něco podobného můžete udělat pomocí /usr/bin/mailx ) pro vytvoření zprávy s HTML dokumentem a přílohami:

#!/bin/bash:<

Dobrý den,

toto je veřejné oznámení od $USER:

                                
DatumČasVerze jádra
$ DATE$TIME Rovelli$KERNEL_VERSION
EMAIL

Potom můžete zavolat skript pošty:

$ ./html_mail.sh [email protected] hosts.yaml 

Pokud věci půjdou podle očekávání, Thunderbird vytvoří e-mail jako tento:

Koneckonců

Abychom to shrnuli, naučili jste se, jak:

  • K generování dokumentů používejte sofistikovanější datové struktury, jako jsou pole a asociativní pole
  • Používejte počítadla ke sledování událostí
  • Používejte zde dokumenty k vytváření dokumentů YAML, pokynů nápovědy, HTML atd.
  • Posílejte e-maily pomocí HTML a YAML

Bash je vhodný pro generování malých, nekomplikovaných dokumentů. Pokud pracujete s velkými nebo složitými dokumenty, může být lepší použít jiný skriptovací jazyk, jako je Python nebo Perl, abyste dosáhli stejných výsledků s menší námahou. Nikdy také nepodceňujte důležitost skutečného debuggeru při vytváření složitých dokumentů.


Linux
  1. Jak vytvořit databázi v MySQL pomocí MySQL Workbench

  2. Jak vytvořit Bash skripty pomocí externích proměnných a vložených skriptů

  3. Jak vytvořit špičku CPU pomocí příkazu bash

  1. Jak vytvářet dokumenty LaTeX s Emacsem

  2. Jak vytvořit nebo přidat index v MySQL s příklady

  3. Jak vytvořit Vm od nuly s Virsh?

  1. Jak napsat Bash skript s příklady

  2. Jak vytvořit zálohu pomocí příkazu tar v Linuxu

  3. Jak vytvořit aliasy Bash