přejít na obsah přejít na navigaci

Linux E X P R E S, Seriál o Bashi

Seriál o Bashi

manman.png

Bohdan Milar sestavil průvodce BASHem, tedy prostředím, které mnoho uživatelů nesnáší a nepotřebuje a mnoho si bez něj neumí představit svou práci nebo zábavu. První díly se věnují popisu prostředí, syntaxi, konfiguraci a proměnným. Pokračuje se ke složitějším konstrukcím, jako jsou podmínky nebo cykly, aby vše uzavřel skript, na kterém si vyzkoušíte vše, co jste se v "kurzu" naučili. Věříme, že v jednotlivých dílech naleznete odpovědi na své otázky.


Nahoru

Příspěvky

Seriál o BASHi
Honza.G 1. 02. 2008, 15:34:07
Odpovědět  Odkaz 
Dobrý den,
mohl byste mi jako odborník na shell vysvětlit chovaní příkazu read v následujícím příkazu?

v Posix shellu i v ksh (na HP-UX) - tak jsem byl zvyklý dostávat hodnoty ze souboru do proměnných:

$ grep '.' /etc/hosts|tail -1| read IP NAME N2 ; echo IP=$IP
IP=172.17.80.190

$ bash
bash-3.2$ grep '.' /etc/hosts|tail -1| read IP NAME N2 ; echo IP=$IP
IP=
bash-3.2$ IP=1
bash-3.2$ grep '.' /etc/hosts|tail -1| read IP NAME N2 ; echo IP=$IP
IP=1

### další info ####
bash-3.2$ cat `which read`
#!/usr/bin/sh
# @(#)B11.23_LR

# This is the executable version of read implemented using the
# posix shell built-in read command.

read "$@"
exit $?


----------
fakt je, že na linuxu to funguje stejně (podle mne) špatně i v ksh, tedy možná se do proměnných něco načte, ale pak to zmizí (čili jakoby se zavolal shell subprocess, ale proč a navíc tam žádný /usr/bin/read není)


Naopak, jakýsi workaround funguje na všech shellech stejně:
$ grep '.' /etc/hosts|tail -1 | while read IP NAME N2; do export IP; echo $IP ; done ; echo venku:IP=$IP
172.17.80.190
venku:IP=

Ale jak dostat tu hodnotu mimo cyklus, že?

Budu Vám vděčný, když mi vysvětlíte, jak ten read funguje (kdy se použije vnitřní příkaz shellu a kdy program nalezený dle PATH) a jak si s tím poradit. Alternativně bych uvítal nějaký jiný elegantní a rychlý (na psaní programu i při jeho vykonávání) způsob, zaj dostat řetězce z řádky v souboru do proměnných shell skriptu.

Díky
J.Gruber
Vlastimil Ott Re:Seriál o BASHi
Vlastimil Ott 1. 02. 2008, 17:04:27
Odpovědět  Odkaz 
Obávám se, že Bohdan Milar dnes již svou pozornost věnuje jiným věcem než sledování diskuzí na LinuxEXPRESu. Ale jistě rád poradí někdo jiný, pokud bude vědět (já bohužel nevím).
Milan Kozák Re:Re:Seriál o BASHi
Milan Kozák 1. 02. 2008, 20:37:49
Odpovědět  Odkaz 
Podle mě je lepší se vykašlat na příkaz read a použít správné uvozovky...
Příklad pro dvě proměnné (var1 a var2:

#!/bin/bash
var1="`head -n 1 /etc/hosts | awk '{print $1}'`"
echo $var1

# Alternativní zápis
var2=$( head -n 1 /etc/hosts | awk '{print $2}' )
echo $var2

echo "V /etc/hosts mám na prvním řádku" $var1 $var2
Seriál o BASHi
adela 29. 10. 2010, 14:38:19
Odpovědět  Odkaz 
mám praktickou připomínku: uvítala bych, kdyby jednotlivé díly v celkovém přehledu dílů měly napsaný i krátký podtitulek o čem je, lépe by se v něm vyhledávalo. díky
Miroslav Hrončok Re: Seriál o BASHi
Miro Hrončok 1. 09. 2011, 12:46:33
Odpovědět  Odkaz 
Nějakou dobu to trvalo, ale už to je.
Petr Valach Seriál o Bashi
Petr Valach 12. 10. 2012, 19:47:34
Odpovědět  Odkaz 
Tak tohle je mazec. Včera jsem se začal konečně věnovat trochu víc Terminálu a hle, najednou tu najdu seriál :-)) je to super, dík. Jen bych nedával negativismus, spíše se hodí titulek "Potřebujete se naučit Bash?"

Přidat názor

Nejsou podporovány žádné značky, komentáře jsou jen čistě textové. Více o diskuzích a pravidlech najdete v nápovědě.
Diskuzi můžete sledovat pomocí RSS kanálu rss



 
 

Top články z OpenOffice.cz