Portál AbcLinuxu, 8. května 2025 22:08

Dotaz: Skript na zkontrolování proměnné prostředí

28.12.2011 23:05 Gustav
Skript na zkontrolování proměnné prostředí
Přečteno: 671×
Odpovědět | Admin
Zdravím celou Linuxovou komunitu :), mám dotaz ohledně skriptu, který mám udělat do školy. Něco sem vytvořil, ale moc to nefunguje. Proto se obracím na vás s prosbou, zda by jste mi mohli poradit, co a jak udělat. Předem díky za rady. Zadání: Vytvořte skript, který po spuštění zkontroluje, zda proměnné prostředí (které zadáme) jsou stejné jako ty které jsou dříve uložené. Povinně zkontrolovat proměnnou PATH + jednu proměnnou prostředí. Skript má fungovat i pro atributové zadání. Pochopil jsem to tak, že spustím skript, ten se mě zeptá na název jedné proměnné prostředí a na jeho hodnotu, kterou zkontroluju. Na hodnotu se mě ještě zadá u PATHu a vyhodí mi to výsledek o tom, zda se shodují nebo ne. To co jsem vytvořil: #!/bin/bash
echo -n "Zadejte promennou prostredi: ";read nazev
env >> promenne.txt
if grep $nazev promenne.txt; then
echo -n "Zadejte hodnotu promenne: "; read hodnota
if grep $hodnota promenne.txt; then
echo "Polozka NALEZENA"
grep $hodnota promenne.txt
else
echo "Polozka NENALEZENA"
echo "Hodnota promenne: "$nazev
ggrep $nazev promenne.txt
fi
else
echo "NENALEZENA zadana promenna prostredi: "$nazev
fi
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

29.12.2011 03:21 nedam
Rozbalit Rozbalit vše Re: Skript na zkontrolování proměnné prostředí
Odpovědět | | Sbalit | Link | Blokovat | Admin
Co treba pres env | grep ^PATH zkontrolovat jestli tam ta promena je a pak ifem zkontrolovat jeji hodnotu?
29.12.2011 03:30 nedam
Rozbalit Rozbalit vše Re: Skript na zkontrolování proměnné prostředí
Kdyz nad tim tak premyslim ,tak to s tim grepem nebude stacit, takze spis nejak takto:

if [ $(env | awk -F= '{ print $1 }' | grep ^PATH) == PATH ]; ...
pavlix avatar 29.12.2011 08:41 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Skript na zkontrolování proměnné prostředí
Proč tak složitě?
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
29.12.2011 16:33 nedam
Rozbalit Rozbalit vše Re: Skript na zkontrolování proměnné prostředí
Protoze me ve 4 rano nic lepsiho nenapadlo a navic je to spatne, takze bych se to nesnazil pouzit.
pavlix avatar 30.12.2011 00:41 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Skript na zkontrolování proměnné prostředí
Tak to jo :).
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
pavlix avatar 29.12.2011 09:16 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Skript na zkontrolování proměnné prostředí
Odpovědět | | Sbalit | Link | Blokovat | Admin
Pár tipů do začátku:

1) >> znamená append, připojit na konec. Soubor se přepisuje pomocí >, tedo pokud chceš do souboru uložit celé env. Přípona .txt je zcela zbytečná. Mimochodem, když dáš uložit proměnné v rámci toho skriptu, tak se namáháš zbytečně, protože už není s čím porovnávat. V zadání máš přece dříve uložeé.

2) Grep umí regexpy (regulární výrazy), takže při rozumných názvech umí být přesnější... tedy hledání proměnné v env se dělá přesněji takto:
grep "^$nazev=" nazev_souboru_s_prostredim
Stříška je speciální znak pro chycení začátku řetězce (řádku v případě grepu). Rovnítko je normální znak, který se v tom souboru nachází za názvem proměnné.

3) Zbavit se názvu proměnné můžeš rovněž přes regexp pomocí unixové obdoby search & replace:
příkaz_který_vydá_správný_řádek_env | sed -e 's/^.*=//'
(vyzkoušej sed s tím nahrazovacím příkazem pustit samotný a zkus co ti vypadne, když mu zadáš řádek ve tvaru název=hodnota)

4) Porovnání... jedna z nejjednodušších možností je uložit si celé řádky či hodnoty do souborů a pustit na tom diff. Ten jde použít přímo v podmínce. Akorát to bude chtít potlačit výstup. Nebo můžeš používat backticky `` a test (hranaté závorky).

Používej manuálové stránky :).
Já už tu vlastně ani nejsem. Abclinuxu umřelo.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.