GNU/Linux >> Znalost Linux >  >> Linux

Jak používat příkaz Bash read

Úvod

Bash read command je vestavěný nástroj, který čte text ze standardního vstupu. Tento nástroj nabízí mnoho funkcí pro čtení uživatelského vstupu a pomáhá tak učinit skripty Bash interaktivní.

Tato příručka vysvětluje, jak se Bash read příkaz pracuje prostřednictvím různých příkladů a případů použití.

Předpoklady

  • Přístup k příkazovému řádku/terminálu.
  • Základy práce s proměnnými prostředí.

Syntaxe čtení Bash

Syntaxe pro read Bash příkaz je:

read <options> <arguments>

read příkaz převezme vstup uživatele a rozdělí řetězec do polí, přičemž každé nové slovo přiřadí argumentu. Pokud je proměnných méně než slov, read uloží zbývající termíny do konečné proměnné.

Zadání názvů argumentů je volitelné. Příkaz uloží vstup uživatele do $REPLY ve výchozím nastavení proměnná.

Možnosti čtení Bash

Bash read Příkaz přichází s mnoha možnostmi ovládání uživatelského vstupu. Některé možnosti nevyžadují další parametry, zatímco jiné mají povinné parametry.

Níže uvedená tabulka ukazuje všechny možné možnosti příkazů a jejich popis.

Možnost Popis
-a <array> Přiřadí zadanou posloupnost slov proměnné s názvem <array> .
-d <delimiter> Přečte řádek, dokud nezadáte <delimiter> místo nového řádku.
-e Spustí interaktivní shellovou relaci pro získání řádku ke čtení.
-i <prefix> Přidá počáteční text před čtením řádku jako předponu.
-n <number> Vrátí se po přečtení zadaného počtu znaků při respektování oddělovače pro předčasné ukončení.
-N <number> Vrátí se po přečtení zadaného počtu znaků, ignoruje oddělovač.
-p <prompt> Před čtením uživatelského vstupu vypíše řetězec výzvy.
-r Zakažte zpětná lomítka pro únikové znaky.
-s Neodpovídá vstupu uživatele.
-t <time> Časový limit příkazu vyprší po zadané době v sekundách.
-u <file descriptor> Čtení z deskriptoru souboru namísto standardního vstupu.

Pokračujte ve čtení a zjistěte, jak funguje příkaz read funguje na různých příkladech.

Příklady čtení Bash

read příkaz funguje bez jakýchkoli argumentů nebo voleb. Chcete-li příkaz otestovat, postupujte podle následujících kroků:

1. Otevřete terminál.

2. Napište příkaz a stiskněte Enter :

read

Výzva čeká na vstup uživatele.

3. Napište větu a stiskněte Enter .

Terminál se vrátí do normálního stavu.

4. Načtěte zprávu pomocí příkazu echo:

echo $REPLY

$REPLY proměnná ukládá read příkazová zpráva.

Níže jsou uvedeny příklady demonstrující složitější případy použití pro read Bash příkaz.

Argumenty

Uložte vstup uživatele do zadané proměnné zadáním argumentu:

read input

Získejte zprávu pomocí:

echo $input

Případně rozdělte uživatelský vstup do různých proměnných přidáním více argumentů.

Například:

read var1 var2

Uživatelský vstup se rozdělí na jednotlivá slova. Získejte je pomocí:

echo $var1
echo $var2

Když uživatelský vstup obsahuje více slov, než je proměnných, další slova jsou přiřazena poslední poskytnuté proměnné:

read var1 var2
foo bar baz
echo $var1
echo $var2

Pokud je slov méně než proměnných, jsou zbývající proměnné prázdné.

Potrubí

Piping přebírá standardní výstup z jednoho příkazu a analyzuje jej jako standardní vstup pro jiný proces. Použijte echo a informace pomocí kanálu read pro okamžitou analýzu. Například:

echo "Hello world!" | (read var1 var2; echo $var1; echo $var2)

Závorky vytvářejí subshell s více příkazy a jednotlivé proměnné se tisknou do konzole.

Heredoc

Další způsob, jak vložit text do read příkaz používá notaci heredoc. Například:

read var1 var2 <<< "Hello world!"
echo $var1
echo $var2

read příkaz očekává literál vstupního proudu a identifikátor přesměrování (<<< ) zadá herestring.

Oddělovače

read příkaz definuje dva typy oddělovačů:

1. Oddělovač pro read příkaz.

Ve výchozím nastavení stiskněte Enter (nový řádek) ukončí příkaz. Přidejte -d tag a poskytněte jiný oddělovač v uvozovkách pro jiné ukončení.

Například:

read -d "-"

Namísto nového řádku je novým oddělovačem pomlčka (- ) místo nového řádku. Příkaz skončí při dosažení oddělovače, bez ohledu na počet argumentů. Odpověď v $REPLY nebo poskytnutá proměnná ukládá uživatelský vstup bez pomlčky (- ).

2. Oddělovač pro rozdělení polí.

Proměnná $IFS (Interní oddělovač polí) ukládá oddělovače slov. Výchozí hodnota, kterou se slova dělí, je mezera " ". Nastavte $IFS proměnnou na jinou hodnotu pro ovládání tohoto chování.

Chcete-li například slova oddělit pomlčkami, použijte:

IFS="-"
echo "Hello-world!" | (read var1 var2; echo $var1; echo $var2)

Přidejte různé oddělovače k ​​rozdělení polí podle různých hodnot:

IFS="-_"
echo "Hello_world-!" | (read var1 var2 var3; echo $var1; echo $var2; echo $var3)

Oddělovač je dlouhý jeden znak a $IFS bere každý uvedený oddělovač jednotlivě.

Výzva

Pomocí příkazu read vytvořte interaktivní výzvy. Přidejte -p tag a zadejte text výzvy, například:

read -p "Enter your username: " username

Text výzvy se vytiskne a vyžaduje vstup uživatele. Text se uloží do proměnné $username .

echo Your username is $username.

Použijte -p možnost ve skriptech Bash pro práci s rychlým vytvářením.

Skrýt vstup uživatele

read příkaz nabízí -s tag pro skrytí zadávání citlivých informací. Běžným případem použití je kombinace -s pomocí -p pro vytvoření výzvy k zadání hesla.

Například:

read -p "Enter your password: "$'\n' -s password

Vstup uživatele je neviditelný. Při opakování zprávy se však zobrazí heslo:

echo $password

Dejte si pozor na toto chování při používání read ve skriptech, které vyzývají k zadání hesla.

Nastavit limit počtu znaků

Příkaz read nabízí dvě možnosti při omezení počtu znaků pro uživatelský vstup:

1. Použijte -n a zadejte číslo pro nastavení limitu počtu znaků. Například:

read -n 3

Stiskněte Enter po jednom znaku pro ukončení příkazu před dosažením limitu počtu znaků. Bez stisknutí klávesy Enter , příkaz se po třech znacích automaticky ukončí.

2. Použijte -N a zadejte číslo pro nastavení limitu znaků při ignorování oddělovače. Například:

read -N 3

Stiskněte Enter neukončí příkaz. Stisk klávesy se však počítá jako znak.

Nastavit časový limit

Nastavte časový limit pro read pro omezení času potřebného k zadání textu:

read -t 5

Příkaz se automaticky ukončí po uplynutí poskytnutého časového limitu.

Pole

Místo použití jednotlivých proměnných k ukládání řetězce přidejte -a možnost uložit vstup do pole. Například:

read -a array <<< "Hello world!"

Získejte prvky pole pomocí:

echo ${array[0]}
echo ${array[1]}

Případně použijte k iteraci pole cyklus for.

Escape znaky a zpětná lomítka

read příkaz umožňuje rozdělení dlouhých vstupů do více řádků pomocí zpětných lomítek. Například:

read password prompt terminal output
Hello \
world\
!

Stiskněte Enter za zpětným lomítkem neukončí příkaz a očekává další vstup na následujícím řádku.

Chcete-li ignorovat interpretaci zpětného lomítka, přidejte -r možnost:

read -r <<< "Hello\world!"; echo $REPLY

Tuto možnost použijte při analýze cest k souboru a jakéhokoli textu, kde má význam zpětné lomítko.


Linux
  1. Jak používat příkaz basename?

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

  3. Jak používat příkaz „screen“ v Linuxu

  1. Jak používat příkaz sed pro Linux

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

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

  1. Jak používat příkaz vmstat

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

  3. Jak používat příkaz Bash let {s příklady}