GNU/Linux >> Znalost Linux >  >> Linux

Jak zopakovat nový řádek ve skriptech Bash Shell

Příkaz echo automaticky přidá nový řádek na konec. To je skvělé.

Ale co když chcete zobrazit pouze prázdný nový řádek? Nebo pokud chcete vypsat něco, co obsahuje nový řádek?

Dobrou zprávou je, že echo vám umožňuje použít znak nového řádku \n k vytištění nového řádku na stejném výstupním řádku, pokud použijete -e možnost:

echo -e "Name\nAddress\nPhone Number"

Pokud spustíte výše uvedený příkaz, získáte tento výstup:

Name
Address
Phone Number

To je hezké, že? Pojďme se na to podívat podrobněji.

Nový řádek je termín, který používáme k označení, že aktuální řádek skončil a text bude pokračovat od řádku pod aktuálním řádkem. Ve většině systémů podobných UNIXu \n se používá k určení nového řádku. Označuje se jako znak nového řádku.

Příkaz echo je ve výchozím nastavení deaktivován výklad zpětného lomítka uniká. Pokud se tedy pokusíte zobrazit nový řádek pomocí escape sekvence '\n', zaznamenáte problém.

$ echo Hello\nworld
Hellonworld

$ echo 'Hello\nworld'
Hello\nworld

Nefunguje ani uzavření textu do jednoduchých uvozovek jako řetězcový literál.

To nebyl očekávaný výstup. Chcete-li skutečně vytisknout nový řádek, můžete pomocí příznaku '-e' sdělit příkazu echo, že chcete povolit interpretaci úniků zpětného lomítka.

$ echo -e 'Hello\nworld'
Hello
world

Pěkné, to je to, co hledáte.

Dovolte mi několik dalších způsobů, jak zobrazit znak nového řádku.

echo proměnná obsahující nový řádek

Řetězec můžete uložit do proměnné bash a poté jej echo pomocí příznaku '-e'.

$ str="Hello\nworld"

$ echo -e $str
Hello
world

Použijte znak '$' místo příznaku -e

Symbol dolaru „$“ se v bash nazývá „rozšiřující“ znak. Toto je znak, který jsem použil v předchozím příkladu k odkazování na hodnotu proměnné v shellu.

Pokud se pozorně podíváte na úryvek níže, uvědomíte si, že rozšiřující znak v tomto případě uchovává dočasnou hodnotu.

$ echo Hello$'\n'world
Hello
world

Nebo můžete použít celý řetězec jako 'dočasnou proměnnou':

$ echo $'Hello\nworld'
Hello
world

Raději bych použil -e vlajka však.

ozvěte svou ozvěnu a vytiskněte něco s novým řádkem

Když odešlete část textu, příkaz echo automaticky přidá nový řádek (a zde je návod, jak tomu můžete zabránit) na konec vašeho textu.

To znamená, že můžete zřetězit více příkazů echo dohromady a vytvořit nový řádek.

$ echo Hello; echo world
Hello
world

Použijte printf k tisku nového řádku v prostředí Bash

printf je další nástroj příkazového řádku, který v podstatě tiskne text do terminálu, ale také vám umožňuje formátovat text.

Použití je velmi jednoduché a podobné echo, ale o něco spolehlivější a konzistentnější.

$ printf 'Hello\nworld\n'
Hello
world

Podle očekávání máte nový řádek bez použití jakýchkoli příznaků.

Závěr

Osobně bych preferoval zůstat u parametru -e nebo použít příkaz printf pro zobrazení nových řádků ve výstupu. Doporučuji vám udělat totéž, ale neváhejte experimentovat.


Linux
  1. Jak změnit Cron Shell (sh to Bash)?

  2. Jak vložit nový řádek do skriptu prostředí Linux?

  3. echo text s novým řádkem v bash

  1. Speciální parametry Bash vysvětlené pomocí 4 příkladů shellových skriptů

  2. Bash poziční parametry vysvětlené pomocí 2 příkladů shell skriptů

  3. Parametry příkazového řádku ve skriptech shellu

  1. How To Echo A Bang!?

  2. Jak porovnávat řetězce ve skriptování Bash Shell

  3. Jak na to:Neomezená historie Bash/shell?