Portál AbcLinuxu, 14. července 2025 19:29


Dotaz: Prikaz v CD ve skriptu bash

Vaclav Lesek avatar 2.10.2003 16:10 Vaclav Lesek | skóre: 11
Prikaz v CD ve skriptu bash
Přečteno: 158×
Odpovědět | Admin
Uvazoval jsem o skriptu, který mi odpojí cdrom a v případě, že se nacházím v /mnt/cdrom, přesunu se o adresř výš, abych mohl cdrom odpojit. Napsal jsem tedy skript:

#!/bin/bash
cesta=`pwd`;
echo $cesta
if [ $cesta = /mnt/cdrom ];
then
echo "Přesunuji se do /mnt..";
cd ..;
fi
echo "Odpojuji cdrom.."
umount /mnt/cdrom
echo "Vysunuji cdrom.."
eject

Vše funguje skoro jak má. Až na příkaz cd. Ten se nejspíš nevykoná, takže se mi nepodaří odpojit cdrom, protože se stále používá. Jde to nějak vyřešit?
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

2.10.2003 16:19 ivok
Rozbalit Rozbalit vše Prikaz v CD ve skriptu bash
Odpovědět | | Sbalit | Link | Blokovat | Admin
1. eject volá umount sám, nemusíte to dělat vy.... 2. imho to nejde, ale úplně jistej si tím nejsu :-) příkaz cd se samozřejmě vykoná, ale asi nedělá to, co si myslíte, že by měl :-) nastudujte za domácí úlohu něco o procesech a jaké mají atributy (ls -l /proc/PID/ a tak ...)
2.10.2003 16:22 Peter Golis | skóre: 65 | blog: Bežné záležitosti | Bratislava
Rozbalit Rozbalit vše Prikaz v CD ve skriptu bash
Odpovědět | | Sbalit | Link | Blokovat | Admin
cesta=`pwd | cut -d/ -f1,2,3`
alebo tak nejak. sedim teraz za starym strojom alpha/OSF1 (man cut, netusim preco mam davat 1az3 na cut). Inac o jednu uroven vyssie ti to nepomoze ked budes hlbsie vnoreny a najme ti to nejajde ze si tam. Takze cd ma byt
cd /mnt alebo cd ${HOME}
p
Vaclav Lesek avatar 3.10.2003 07:25 Vaclav Lesek | skóre: 11
Rozbalit Rozbalit vše Prikaz v CD ve skriptu bash
cd /mnt, cd /home/user. To vsem jsem zkousel.
2.10.2003 16:26 Maud Lebowski
Rozbalit Rozbalit vše Prikaz v CD ve skriptu bash
Odpovědět | | Sbalit | Link | Blokovat | Admin
zrejme davas ten prikaz v tom adresari /mnt/cdrom? V tom pripade to funguje tak, ze shell je pichlej v /mnt/cdrom. Kdyz das prikaz tak se spusti novy subshell ktery udela presne to co ty az po to echo Odpojuji cdrom, pak se pri pokusu o umoutn zarazi prtoze on sice v tom adresari neni, ale ty tam stojis s tim shellem ze ktereho jzi to spustil, hodi par vypisu a skonci s tim, ze rizeni preda tomu shellu ze ktereho jsi to spoustel... Cili duvod je, ze tam stoji dva processy a jen jeden se prepne z toho mnt/cdrom adresare pryc. Resenim, ktere ale uzivatelum casto nevyhovuje, je pouziti automountu s tim, ze na prenosnych mediich typu cdrom, floppy a zip se da timeout 1,2 sekundy a ono se to pak udela samo jak ten adresar opustis....
3.10.2003 09:32 astar
Rozbalit Rozbalit vše Prikaz v CD ve skriptu bash
Odpovědět | | Sbalit | Link | Blokovat | Admin
trochu zjednodusene receno podproces nemuze ovlivnit svuj nadproces, takze cd ve skriptu je problem. jednoduchym resenim je zavedeni skriptu pomoci tecky (napr. ". skript"), cimz dojde k jeho provedeni v aktualnim shellu, novy se nevytvari a tim padem cd udela to co se od nej ocekava.

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.