GNU/Linux >> Znalost Linux >  >> Linux

Jak používat příkaz echo bez nového řádku

Příkaz echo je praktický způsob tisku čehokoli ve skriptech shellu.

Ve výchozím nastavení vždy přidá nový znak řádku. Pokud tedy spustíte více příkazů echo, každý výstup se zobrazí na novém řádku.

To však může být nepohodlné v situacích, kdy potřebujete tisknout pomocí příkazu echo, ale bez nového řádku.

Představte si, že se pokoušíte vytisknout sérii Fibonacci:1, 1, 2, 3, 5, 8, 13, 21, 34, 55

Můžete použít -n příznak příkazu echo pro tisk bez nového řádku:

echo -n "Hello World"

Všimnete si, že výzva se zobrazí na stejném řádku hned po Hello World now.

Pojďme se na to podívat podrobněji.

Tisk příkazu echo bez nového řádku

Vezměme si jednoduchý cyklus for, který vytiskne obsah pole ve skriptu bash a zkontrolujeme jeho výstup.

$ bash_array=(1 2 3 4)

$ for i in ${bash_array[@]}; do
    echo $i
done
1
2
3
4

Jak vidíte, při každém provedení příkazu echo se výstup zobrazí na novém řádku. Někdy to je to, co chcete, jindy chcete, aby výstup pokračoval na stejném řádku, aniž by začínal na novém řádku.

Seznamte se s příznakem „-n“

Implementace bash příkazu echo obvykle k výstupu připojuje "\n" (escape znak označující nový řádek). Příznak "-n" nepřipojuje k výstupu "\n".

$ bash_array=(1 2 3 4 5 6 7 8)

$ for i in ${bash_array[@]}; do
    echo -n $i
done
12345678

Jak vidíte, všechna čísla jsou nyní zobrazena na jednom řádku. To znamená, že pokaždé, když byl příkaz echo spuštěn, nevyšel na nový řádek.

echo -n nefungovalo. Co teď?

V některých případech pomocí echo -n také vypíše -n znak namísto tisku textu bez nového řádku.

To je možné, pokud existuje samostatná implementace příkazu echo pomocí shellu, který používáte.

Zmatený? Některé distribuce a shelly mohou mít vlastní implementaci některých vestavěných příkazů shellu. echo je jedním z takových příkazů.

Zde je několik věcí, které můžete vyzkoušet.

Přidejte znak shebang následovaný /bin/bash, abyste zajistili, že váš shell skript bude používat bash shell.

#!/bin/bash

Pokud to nefunguje, můžete zkusit místo příkazu echo použít příkaz printf.

Ve výchozím nastavení printf nepřidává znak nového řádku:

printf "Something without newline"

Musíte explicitně zadat znak nového řádku \n:

printf "Something with newline\n"

Příkaz printf se chová jako příkaz printf v C a můžete jej použít k tisku složitějších formátovaných výstupů.

Příkaz printf má mnohem konzistentnější chování. echo je dobré pro jednoduché věci, ale doporučuji použít printf pro cokoli složitější.

Doufám, že vám tento jednoduchý návod pomůže při ovládání chování nového řádku v bash skriptech.


Linux
  1. Jak používat Su Command v Linuxu

  2. Jak používat příkaz basename?

  3. Jak používat Linux Screen Command

  1. Jak používat Linuxový příkaz grep

  2. Jak používat příkaz historie v Linuxu

  3. Jak používat příkaz historie Linuxu

  1. Jak používat Telnet ve Windows

  2. Jak používat příkaz Disown v Linuxu

  3. Jak používat příkaz Linux SS