Portál AbcLinuxu, 10. května 2025 07:38

Dotaz: Skriptík

22.11.2010 15:56 Generator | skóre: 4
Skriptík
Přečteno: 355×
Odpovědět | Admin
Ahoj,

začínám s Linuxem a napsala jsem si jeden skriptík, jenže moc nerozumím syntaxi příkazu if... podmínce - mohli by jste mi prosím zkušeným okem opravit tanhle kousek ködu?

if [ find -mtime 0 NOT "" ]
":))" >> /etc/samba_zaloha/log.log
if [ find -mtime 1 NOT "" ]
":)" >> /etc/samba_zaloha/log.log

Díky moc :)
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

22.11.2010 16:08 Patrik Uhrak | skóre: 31 | blog: pato
Rozbalit Rozbalit vše Re: Skriptík
Odpovědět | | Sbalit | Link | Blokovat | Admin

Zdravim,

bolo by mozno jednoduchsie vysvetlit, co ma robit ten kus kodu  a co mate za ciel ;)

Chytrex avatar 22.11.2010 16:28 Chytrex | skóre: 30 | Bohumín
Rozbalit Rozbalit vše Re: Skriptík
Odpovědět | | Sbalit | Link | Blokovat | Admin
#! /bin/bash
zkouskaa=`find (adresář) -mtime 0`
zkouskab=`find (adresář) -mtime 1`

if [ "$zkouskaa" != "" ]; then
":))" >> /etc/samba_zaloha/log.log
fi
if [ "$zkouskab" != "" ]; then
":)" >> /etc/samba_zaloha/log.log
fi
Takhle nějak? Samosebou (adresář) nahradíš cestou k tomu kde hledat.
Hrdý člen KERNEL ULTRAS .:. define QUESTION ((bb) || !(bb)) .:. Odmítám vaši realitu a nahrazuji ji svou vlastní..
rADOn avatar 22.11.2010 17:14 rADOn | skóre: 44 | blog: bloK | Praha
Rozbalit Rozbalit vše Re: Skriptík
Jeste tomu chybi echo.
#! /bin/bash
zkouskaa=`find (adresář) -mtime 0`
zkouskab=`find (adresář) -mtime 1`
 
if [ "$zkouskaa" != "" ]; then
  echo ":))" >> /etc/samba_zaloha/log.log
fi
if [ "$zkouskab" != "" ]; then
  echo ":)" >> /etc/samba_zaloha/log.log
fi
"2^24 comments ought to be enough for anyone" -- CmdrTaco
Chytrex avatar 22.11.2010 17:31 Chytrex | skóre: 30 | Bohumín
Rozbalit Rozbalit vše Re: Skriptík
Já věděl že sem tam něco chtěl ještě dopsat.. Dik za opravení;)
Hrdý člen KERNEL ULTRAS .:. define QUESTION ((bb) || !(bb)) .:. Odmítám vaši realitu a nahrazuji ji svou vlastní..
rADOn avatar 22.11.2010 18:20 rADOn | skóre: 44 | blog: bloK | Praha
Rozbalit Rozbalit vše Re: Skriptík
Kdyz tak na to koukam, je tam jeste jedna zaludnost - velikost prikazove radky je omezena, takze konstrukce "$zkouskaa" != "" by pro velky pocet souboru mohla delat neplechu a v kazdem pripade bude zbytecne zdrzovat. Je lepsi to po prvnim nalezenem souboru uriznout:
if [ `find /somewhere -mtime 1 | head -n1` ]; then
  echo ":))" >> /etc/samba_zaloha/log.log
fi

"2^24 comments ought to be enough for anyone" -- CmdrTaco
22.11.2010 18:48 Semo | skóre: 45 | blog: Semo
Rozbalit Rozbalit vše Re: Skriptík
Da sa riadit podla navratovej hodnoty find-u.
if find /somewhere -mtime 1 -quit &>/dev/null; then
  echo ":))" >> /etc/samba_zaloha/log.log
fi
alebo strucne
find /somewhere -mtime 1 -quit 2>/dev/null &&
  echo ":))" >> /etc/samba_zaloha/log.log
Este sa vyuzit fprintf vo find, ale ten neapenduje, ale prepisuje subor log.log a vzdy ho vytvori (aspon s dlzkou 0).
find usb -mtime 1 -fprintf /etc/samba_zaloha/log.log ":))\n" -quit
If you hold a Unix shell up to your ear, you can you hear the C.
rADOn avatar 22.11.2010 19:19 rADOn | skóre: 44 | blog: bloK | Praha
Rozbalit Rozbalit vše Re: Skriptík
Podle navratove hodnoty findu se ridit neda, protoze ta udava pouze jestli find behem hledani narazil na nejakou chybu. "Nenalezeno" neni chyba a na navratove hodnote se neprojevi. Na -quit jsem opravdu zapomel, kdyz se pouzije -print -quit tak to vypise prvni nalezenou cestu a skonci, a to uz je testovatelne. Pokud by stacil fprintf tak je urcite nejlepsi, ale autorka se ptala na if, ne find, takze predpokladam ze chce nakonec do toho podmineneho bloku dat neco slozitejsiho.
"2^24 comments ought to be enough for anyone" -- CmdrTaco
22.11.2010 19:42 Semo | skóre: 45 | blog: Semo
Rozbalit Rozbalit vše Re: Skriptík
Mne GNU find vracia hodnotu 1 ak nenajde hladanu vec a 0 ak najde. Ale uznavam, ze dnes som bol zakaznika na Solarise a tam sa navratova hodnota nelisila.
If you hold a Unix shell up to your ear, you can you hear the C.
rADOn avatar 22.11.2010 19:57 rADOn | skóre: 44 | blog: bloK | Praha
Rozbalit Rozbalit vše Re: Skriptík
radon@krypton ~ $ find /boot -name grub && echo nasli moji radcove
/boot/grub
nasli moji radcove
radon@krypton ~ $ find /boot -name neexistuje && echo nasli moji radcove
nasli moji radcove
radon@krypton ~ $ find --version
find (GNU findutils) 4.4.2
Nedal jsi nahodou neexistujici cestu jako koren hledani? To JE chyba a find skonci s 1. Viz manstranka:
EXIT STATUS

find exits with status 0 if all files are processed successfully, greater than 0 if errors occur. This is deliberately a very broad description, but if the return value is non-zero, you should not rely on the correctness of the results of find.
Cili muze skoncit s 1 i kdyz neco najde, treba vyse uvedeny priklad jsem puvodne chtel demonstrovat hledanimn passwd v /etc, ale dostal jsem 1 protoze /etc/cups/ssl je necitelny.
"2^24 comments ought to be enough for anyone" -- CmdrTaco
22.11.2010 20:23 Semo | skóre: 45 | blog: Semo
Rozbalit Rozbalit vše Re: Skriptík
Eeeeeeeeeeeeeeeeeeeeee, dal. Mea vulva. Mas pravdu.
If you hold a Unix shell up to your ear, you can you hear the C.
rADOn avatar 23.11.2010 13:05 rADOn | skóre: 44 | blog: bloK | Praha
Rozbalit Rozbalit vše Re: Skriptík
Mea vulva.
:-D :-D :-D
"2^24 comments ought to be enough for anyone" -- CmdrTaco
23.11.2010 13:50 cronin | skóre: 49
Rozbalit Rozbalit vše Re: Skriptík
Tak to vyzera, ked byvaly ministrant pozera vela porna. :-D

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.