Fórum Ubuntu CZ/SK
Ubuntu pro osobní počítače => Software => Příkazový řádek a programování pro GNU/Linux => Téma založeno: Michal "Tylnesh" Kohútek 28 Února 2010, 17:58:03
-
Dobrý deň, potreboval by som poradiť s jedným skriptom, ktorý som si napísal, aby som sa vyhol tomu otravnému stmavovaniu obrazovky počas dlhšej nečinnosti (napr. pozeranie filmu). Pôvodne som spravil dva veľmi jednoduché, prvý ktorý gnome-screensaver a gnome-power-manager vypol, druhý, ktorý ich opätovne zapol. Povedal som si však, že dve ikonky na tray-i sa mi príliš nepáčia a ako riešenie nie sú zrovna elegantné, preto som si kukol podmienky a napísal som toto:
#!/bin/bash
if [ "$(pidof gnome-screensaver)" && "$(pidof gnome-power-manager)" ]
then killall gnome-screensaver && killall gnome-power-manager
else gnome-screensaver && gnome-power-manager
fi
vyhodí mi to toto
./pokus.sh: line 2: [: missing `]'
** (gnome-screensaver:18511): WARNING **: screensaver already running in this session
Vtipné je, že kým tam bolo len gnome-screensaver, všetko išlo ako malo...
-
Zkus místo
if [ "$(pidof gnome-screensaver)" && "$(pidof gnome-power-manager)" ]
toto
if [[ "$(pidof gnome-screensaver)" && "$(pidof gnome-power-manager)" ]]
Není to vtip, Bash to tak má 8)
-
Aha... ďakujem... stále mi však zostal ten druhý problém, v prípade, keď sú tie dva procesy spustené...
BTW Je počet hranatých zátvoriek ten istý ako počet príkazov v podmienke?
-
Myslím, že ne, ale co to vyzkoušet ;)
nebo ekvivalentní zápis je
if [ foo ] && [ bar ]; then ....
A ten druhý problém sem nepochopil o co jde ?
-
Keď ten skript pustím v konzole, tak ak je gnome-screensaver už zapnutý, tak miesto jeho vypnutia mi vypíše toto:
** (gnome-screensaver:18511): WARNING **: screensaver already running in this session
-
Keď ten skript pustím v konzole, tak ak je gnome-screensaver už zapnutý, tak miesto jeho vypnutia mi vypíše toto:
** (gnome-screensaver:18511): WARNING **: screensaver already running in this session
Co ma ten script robit? Nie je mi uplne jasna podstata toho o co sa snazis.
Naozaj chces aby to robilo toto:
Ak su oba pustene, zabi ich oba, inak(ak nie su oba naraz spustene) spusti oba po sebe. Druha vec je, ze gnome-power-manager nevracia chod do shellu, ale ho blokuje, cize ak ho chces spustat tak s & na konci.
Lebo podla mna robi to, co si mu napisal, aby robil. Mas spusteny iba jeden process z tych dvoch, tak ich nezabija(podmienka je false, lebo true je iba ak oba bezia subezne), ale pokusi sa spustit oba procesy(taku logiku si chcel?), co skonci chybou, ze gnome-screensaver ti uz bezi.