Jednou z nejužitečnějších vlastností skriptů shellu je znak nízké uvozovky, obvykle nazývaný backtick (`) ve světě Linuxu. Buďte opatrní – nejedná se o normální znak jednoduché uvozovky, který jste zvyklí používat pro řetězce. Protože se mimo skripty shellu příliš často nepoužívá, možná ani nevíte, kde jej na klávesnici najít. Měli byste se s ním seznámit, protože je klíčovou součástí mnoha skriptů shellu.
Nápověda :Na americké klávesnici je obvykle na stejné klávese jako symbol vlnovky ( ∼ ).Backtick umožňuje přiřadit výstup příkazu shellu proměnné. I když se to nezdá, je to hlavní stavební kámen v programování skriptů. Celý příkaz příkazového řádku musíte ohraničit znaky backtick:
# testing=`date`
Shell spustí příkaz v rámci backticks a přiřadí výstup proměnné testování. Zde je příklad vytvoření proměnné pomocí výstupu z normálního příkazu shellu:
$ cat myscript.sh #!/bin/bash # using the backtick character testing=`date` echo "The date and time are: $testing" $
Testování proměnné přijímá výstup z příkazu date a používá se v příkazu echo k jeho zobrazení. Spuštění skriptu shellu vytvoří následující výstup:
$ chmod u+x myscript.sh $ ./myscript.sh The date and time are: Mon Jul 21 09:13:42 IST 2014 $
V tomto příkladu to není až tak vzrušující (příkaz můžete stejně snadno vložit do příkazu echo), ale jakmile zachytíte výstup příkazu do proměnné, můžete s tím dělat cokoli.
Zde je oblíbený příklad toho, jak se zpětné zaškrtnutí používá k zachycení aktuálního data a jeho použití k vytvoření jedinečného souboru ve skriptu:
#!/bin/bash # copy the /usr/bin directory listing to a log file today=`date +%y%m%d` ls /usr/bin -al > /tmp/log.$today
Proměnná dnes je přiřazena k výstupu příkazu formátovaného data. Toto je běžná technika používaná k extrahování informací o datu pro názvy souborů protokolu. Formát +%y%m%d dává příkazu datum pokyn k zobrazení data jako dvoumístného roku, měsíce a dne:
$ date +%y%m%d 140721 $
Skript přiřadí hodnotu proměnné, která se pak použije jako součást názvu souboru. Samotný soubor obsahuje přesměrovaný výstup výpisu adresáře. Po spuštění skriptu byste měli vidět nový soubor v adresáři /tmp:
$ ls -l /tmp/log.140721 -rw-rw-r-- 1 geek geek 116755 Jul 21 09:21 /tmp/log.140721
Soubor protokolu se objeví v adresáři s hodnotou proměnné $today jako součást názvu souboru. Obsahem souboru protokolu je výpis adresáře z adresáře /usr/bin. Pokud je skript spuštěn další den, název souboru protokolu bude belog.140722, čímž se vytvoří nový soubor pro nový den.