Jak vytvořit nabídku výběru pomocí příkazu select v prostředí Bash

  • Vovich Masterovich
  • 0
  • 4491
  • 632
>

Všichni velmi často používáme bash skripty k automatizaci nudných a opakujících se úkolů. Někdy v našich skriptech musíme požádat uživatele, aby provedl jednu nebo více možností interaktivně: v tomto tutoriálu uvidíme, jak použít příkaz Bash shell select k provedení takové operace ve velmi několika řádcích kódu.

V tomto výukovém programu se naučíte:
  • Jak používat příkaz Bash select
  • Jak přizpůsobit výzvu k výběru nabídky
Jak vytvořit nabídku výběru pomocí příkazu select v prostředí Bash

Použité softwarové požadavky a konvence

Softwarové požadavky a konvence příkazového řádku systému Linux
Kategorie Použité požadavky, konvence nebo verze softwaru
Systém Nezávislé na distribuci
Software Bash shell
jiný Žádné zvláštní požadavky
Konvence # - vyžaduje, aby dané linuxové příkazy byly prováděny s oprávněním root buď přímo jako uživatel root, nebo pomocí sudo příkaz
$ - vyžaduje, aby dané linuxové příkazy byly prováděny jako běžný neprivilegovaný uživatel

Příkaz select

Skriptování je jednou z nejčastějších dovedností, které by měl mít správce systému, aby automatizoval opakované úkoly a snížil jejich náchylnost k chybám. V ne příliš složitých případech je shell dokonalým nástrojem, který lze pro tuto práci použít. Bash Bourne Again Shell, je nejpoužívanější prostředí ve světě GNU / Linux. Tento shell poskytuje velmi užitečné vybrat prohlášení. Jeho účel je popsán následujícím způsobem:

Vyberte slova ze seznamu a proveďte příkazy

Popis je docela vysvětlující. Toto prohlášení nám umožňuje interaktivně přijímat vstupy od uživatele, generovat očíslovaný seznam možností a vybízet jej k výběru. Podívejme se, jak se používá:

vyberte JMÉNO [ve SLOVECH…;] proveďte PŘÍKAZY; Hotovo

Syntaxe je velmi podobná syntaxi tradiční pro smyčku v Bash, s výjimkou použití vybrat klíčové slovo. Příkaz select však funguje jiným způsobem. Podívejme se na příklad. Předpokládejme, že chceme požádat uživatele, aby vybral jeden ze souborů obsažených v adresáři. Zde můžeme napsat:

$ files = "$ (ls -A.)" $ vyberte název souboru v $ files; do echo "$ file"; hotovo 1) soubor1 2) soubor2 3) soubor3 #? 

Vysvětlíme, co jsme udělali. Nejprve jsme pomocí seznamu získali seznam všech souborů přítomných v adresáři (v tomto případě aktuální pracovní adresář) je příkaz a určení -A možnost (zkratka pro --téměř všechny), aby bylo možné vyloučit předpokládané  . a z vráceného seznamu, který jsme přiřadili soubory proměnná.

Poté jsme pokračovali v používání vybrat prohlášení. Výše uvedené je velmi základní příklad: poskytli jsme výsledek rozšíření soubor proměnná jako seznam možností, které mají být zahrnuty. Všimněte si, že jsme se vyhnuli citování expanze $ soubory záměrně, za účelem získání rozdělení slov: je-li expanze uvedena v uvozovkách rozdělení slov je potlačeno, takže mezery se nepoužívají jako oddělovače slov a výsledek rozšíření se považuje za celek. V tomto případě to není to, co chceme: potřebujeme, aby každé slovo bylo použito jako volba v generované nabídce.



Slova získaná z rozšíření proměnné jsou vytištěna na stderr (standardní chyba). Před každým z nich je přiděleno číslo, které uživatel použije k odkazu. Po zobrazení všech prvků je uživatel vyzván k zadání jeho volby. Zobrazí se PS3 výzva, která je ve výchozím nastavení nastavena na #?.

Co se stane, když uživatel provede výběr? Uvidíme:

$ files = "$ (ls -A.)" $ vyberte název souboru v $ files; do echo "Vybrali jste $ název souboru"; hotovo 1) soubor1 2) soubor2 3) soubor3 #? 1 Vybrali jste soubor 1 #? 

Volba, kterou jsme zadali, 1, se čte z stdin (standardní vstup) a pokud je zadané číslo mezi dostupnými, je odpovídající slovo (v příkladu „soubor1“) přiřazeno,název souboru proměnná. V našem příkladu jsme zadali echo "$ název souboru" jako příkaz, který se má provést po provedení výběru: jako výsledek: vybrané slovo se vytiskne na obrazovku. Číslo, které zadáme k upřesnění naší volby, je také uloženo v proměnné:  ODPOVĚĎ.

Ve výše uvedeném příkladu si můžete všimnout podivné věci: jakmile jsme provedli naši volbu, po provedení příkazu jsme byli znovu vyzváni k výběru, proč? Stalo se to, protože jsme neposkytli přestávka příkaz. Můžeme to snadno opravit:

$ files = "$ (ls -A.)" $ vyberte název souboru v $ files; do echo "Vybrali jste $ název souboru"; přestávka; hotovo 1) soubor1 2) soubor2 3) soubor3 #? 1 Vybrali jste soubor 1

Co když neposkytneme žádný výběr? Výzva se jednoduše opakuje, dokud neprovedeme:

vyberte název souboru v $ files; do echo "Vybrali jste $ název souboru"; přestávka; hotovo 1) soubor1 2) soubor2 3) soubor3 #? 1) soubor1 2) soubor2 3) soubor3 #? 

Co když místo toho zadáme číslo, které není v seznamu? V tomto případě je proměnná, kterou používáme, v našem případě název souboru, nastavena na nula.

Změna výzvy k výběru

Jak jsme již viděli, výzva použitá shellem v kontextu příkazu select je PS3 výzva, která má ve výchozím nastavení #? řetězec má hodnotu. To není příliš uživatelsky přívětivé, takže to možná budeme chtít změnit a místo toho použít něco popisnějšího. Jak to můžeme udělat? Velmi jednoduché: musíme změnit hodnotu PS3 parametr:

$ PS3 = "Zadejte prosím svůj výběr:"


Až příště použijeme vybrat prohlášení, všimneme si změny:

vyberte název souboru v $ files; do echo "Vybrali jste $ název $ REPLY"; přestávka; hotovo 1) soubor1 2) soubor2 3) soubor3 Vyberte si: 

Změna provedená v proměnné bude účinná pouze pro aktuální část shellu, a pokud ano vývozní proměnná, také u všech jejích podřízených:

$ export PS3 = "Zadejte prosím svůj výběr:"

Změna však zůstává dočasná, dokud nenastavíme PS3 proměnná uvnitř .bashrc soubor. PS3 je jen jedna z výzev použitých v Bash: podívejte se na náš článek s výzvou bash, pokud se chcete dozvědět více o tomto tématu.

Závěry

V tomto tutoriálu jsme se naučili, jak používat Bash vybrat prohlášení. Viděli jsme, jak to funguje, a jak jej můžeme použít k vytvoření výběrové nabídky, abychom interaktivně vyzvali uživatele k provedení výběru. Nakonec jsme viděli, jak upravit výzvu zobrazenou v nabídce výběru úpravou prostředí PS3 parametr.




Zatím žádné komentáře

Sbírka užitečných informací o operačním systému Linux a nových technologiích
Nejnovější články, praktické tipy, podrobné recenze a průvodci. Ve světě operačního systému Linux se budete cítit jako doma