Skript

Z MiS
(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
(Podmínky: Přidán alespoň odkaz na materiály mimo MiŠ)
(Vytvoření skriptu: Přidán shebang)
 
(Není zobrazeno 6 mezilehlých verzí od 1 uživatele.)
Řádka 6: Řádka 6:
 
* Lze zahrnout i podmínky, cykly, zadávat parametry apod.
 
* Lze zahrnout i podmínky, cykly, zadávat parametry apod.
  
 +
== Vytvoření skriptu ==
 +
* Pro vyzkoušení můžete vytvořit jednoduchý skript „Hello world“:
 +
* Připravte složku s názvem <tt>bin</tt> ve své domovské složce.
 +
* Připravte v ní skript (vytvořte textový soubor) s názvem <tt>pozdrav</tt>.
 +
* Do souboru zapište příkaz pro výpis "Ahoj světe" &mdash; bude fungovat ve Windows i v&nbsp;Linuxu:
 +
echo "Ahoj světe"
 +
* Soubor ale zatím není považován za spustitelný, to doplníme v&nbsp;dalším kroku.
  
== Vytvoření a spuštění skriptu ==
+
<div class="Poznamka">
 +
V&nbsp;Unixu a Linuxu je zvykem na prvním řádku skriptu uvést, který shell se má použít pro interpretaci skriptu. Například:
 +
#!/bin/bash
 +
 
 +
Toto se obvykle označuje jako „shebang line“. Pro spuštění Bashe je tedy vhodné skript v&nbsp;Linuxu zapsat takto:
 +
#!/bin/bash
 +
echo "Ahoj světe"
 +
</div>
 +
 
 +
== Nastavení oprávnění a spuštění skriptu ==
 
=== Windows ===
 
=== Windows ===
 
* Příkazy zapište do souboru s příponou <tt>.bat</tt>.
 
* Příkazy zapište do souboru s příponou <tt>.bat</tt>.
Řádka 25: Řádka 41:
 
<div class="Upozorneni">POZOR! Pokud není skript v proměnné <tt>PATH</tt>, na rozdíl od Windows nestačí pro spuštění napsat ve složce skriptu:
 
<div class="Upozorneni">POZOR! Pokud není skript v proměnné <tt>PATH</tt>, na rozdíl od Windows nestačí pro spuštění napsat ve složce skriptu:
 
  skript
 
  skript
 +
</div>
 +
 +
=== Zařazení do PATH ===
 +
* Skript nyní nejde spustit zapsáním jména skriptu, je třeba uvést cestu
 +
''$'' pozdrav
 +
''-bash: pozdrav: příkaz nenalezen''
 +
''$'' ./pozdrav
 +
''Ahoj''
 +
* Pokud chcete skript spouštět pouze zapsáním jeho jména, přidejte složku <tt>bin</tt> do proměnné <tt>$PATH</tt>.
 +
PATH=$PATH:~/bin
 +
resp.:
 +
set PATH=%PATH%;%USERPROFILE%\bin
 +
* Vyzkoušejte, že skript již lze spustit tak, že napíšete pouze název.
 +
 +
* Můžete také přiřazení PATH vložit do inicializace Bashe tak, aby se vám proměnná nastavila automaticky při spuštění shellu.
 +
 +
<div class="Poznamka">Poznámka:<br />
 +
Pokud v Ubuntu existuje složka <tt>bin</tt> ve Vaší domovské složce, automaticky se přidá do proměnné <tt>PATH</tt>.
 +
Tato akce se provede ve skriptu <tt>/.profile</tt>.
 
</div>
 
</div>
  
Řádka 32: Řádka 67:
 
* Pro ostatní například: [http://www.linuxexpres.cz/praxe/bash-11-dil LinuxExpres.cz &rarr; BASH].
 
* Pro ostatní například: [http://www.linuxexpres.cz/praxe/bash-11-dil LinuxExpres.cz &rarr; BASH].
  
== Cykly ==
+
 
 +
== Cyklus <tt>for</tt> ==
 +
; Linux (bash)
 +
* Základní syntaxe:
 +
for ''název-proměnné'' in ''varianty-oddělené-mezerou-nebo-metaznak''; do ''příkaz'' $''název-proměnné''
 +
* Příklady:
 +
for user in Franta Marie Karel; do echo Hello $user
 +
Postupně pozdraví všechny uživatele &mdash; pro každého vypíše pozdrav "Hello Franta" apod.
 +
for directory in data zalohy pokusy; do mkdir $directory
 +
Vytvoří uvedené složky v&nbsp;aktuálním adresáři.
 +
for user in franta marie karel; do usermod -aG skupina $user
 +
Přidá všechny uvedené uživatelské účty do skupiny s názvem <em>skupina</em>. Musí spouštět správce počítače (<code>sudo</code>). Uživatelské účty musí existovat (<code>adduser</code>).
 +
 
 +
Viz také:
 +
* Pro studenty Cisco Networking Academy viz NDG Linux Essentials.
 +
* Pro ostatní například: [http://www.linuxexpres.cz/praxe/bash-9-dil LinuxExpres.cz &rarr; BASH].
 +
 
 +
; Windows
 +
* Základní syntaxe:
 +
for %''název-proměnné'' in (''varianty-oddělené-mezerou-nebo-metaznak'') do ''příkaz'' %''název-proměnné''
 +
* Příklady:
 +
for %x in (a*.jpg) do ren %x %x.bkp
 +
for %slozka in (data zalohy pokusy) do if not exist %slozka md %slozka
 +
* Ve skriptech je třeba znak procento zdvojit:
 +
for %%x in (a*.jpg) do ren %%x %%x.bkp
 +
for %%slozka in (data zalohy pokusy) do if not exist %%slozka md %%slozka
 +
 
 +
== Funkce ==
 +
; Linux (bash)
 +
* Deklarace funkce:
 +
function ''název-funkce'' {
 +
    ''příkazy''
 +
}
 +
* Volání funkce:
 +
''název-funkce''

Aktuální verze z 14. 1. 2026, 08:53


Obsah

Co je skript?

Vytvoření skriptu

echo "Ahoj světe"

V Unixu a Linuxu je zvykem na prvním řádku skriptu uvést, který shell se má použít pro interpretaci skriptu. Například:

#!/bin/bash

Toto se obvykle označuje jako „shebang line“. Pro spuštění Bashe je tedy vhodné skript v Linuxu zapsat takto:

#!/bin/bash
echo "Ahoj světe"

Nastavení oprávnění a spuštění skriptu

Windows

skript.bat

GNU/Linux

chmod a+x skript
./skript
POZOR! Pokud není skript v proměnné PATH, na rozdíl od Windows nestačí pro spuštění napsat ve složce skriptu:
skript

Zařazení do PATH

$ pozdrav
-bash: pozdrav: příkaz nenalezen
$ ./pozdrav
Ahoj
PATH=$PATH:~/bin

resp.:

set PATH=%PATH%;%USERPROFILE%\bin
Poznámka:

Pokud v Ubuntu existuje složka bin ve Vaší domovské složce, automaticky se přidá do proměnné PATH. Tato akce se provede ve skriptu /.profile.


Podmínky


Cyklus for

Linux (bash)
for název-proměnné in varianty-oddělené-mezerou-nebo-metaznak; do příkaz $název-proměnné
for user in Franta Marie Karel; do echo Hello $user

Postupně pozdraví všechny uživatele — pro každého vypíše pozdrav "Hello Franta" apod.

for directory in data zalohy pokusy; do mkdir $directory

Vytvoří uvedené složky v aktuálním adresáři.

for user in franta marie karel; do usermod -aG skupina $user

Přidá všechny uvedené uživatelské účty do skupiny s názvem skupina. Musí spouštět správce počítače (sudo). Uživatelské účty musí existovat (adduser).

Viz také:

Windows
for %název-proměnné in (varianty-oddělené-mezerou-nebo-metaznak) do příkaz %název-proměnné
for %x in (a*.jpg) do ren %x %x.bkp
for %slozka in (data zalohy pokusy) do if not exist %slozka md %slozka
for %%x in (a*.jpg) do ren %%x %%x.bkp
for %%slozka in (data zalohy pokusy) do if not exist %%slozka md %%slozka

Funkce

Linux (bash)
function název-funkce {
    příkazy
}
název-funkce
Osobní nástroje
Jmenné prostory
Varianty
Akce
Výuka
Navigace
Nástroje