Kezdőlap › Fórumok › Programozás › Bash script
- This topic has 437 hozzászólás, 56 résztvevő, and was last updated 13 years, 5 months telt el by
Goosfrabaa.
-
SzerzőBejegyzés
-
2006-04-01-07:44 #2053199
if [ $0 -eq mnt ] – ez így nem jó, elõször is, számra vonatkozik, amibõl csak egy változó lehet, a másiknak konstansnak kell lennie. Bár minden bizonnyal ez a mnt string akar lenni, akkor „”-közé kell helyezni és így kell helyesen írni: if [ $0 == „mnt” ]
2006-04-01-08:00 #2053200így kell helyesen írni: if [ $0 == „mnt” ]
Sõt így: if [ „$0” == „mnt” ]
Azt is elmondom miért. Ha a $0 üres sztring akkor ez a forma if [ $0 == „mnt” ] hibát okoz futás közben, mert így fog kinézni: if [ == „mnt” ] Ellenben ez a formula if [ „$0” == „mnt” ] üres $0 esetén futás közben így fog kinézni: if [ „” == „mnt” ] ami nem okoz hibát.
Az azonban tény hogy a $0 a script saját neve tehát nem lehet üres, de ez a szemlélet vonatkozhat bármilyen más változóra is pl. egy $x nevûre.ELaci
2006-04-01-08:46 #2053201” if [ „” == „mnt” ] ami nem okoz hibát.”
Ez igaz. Viszont, ha a $x paraméter akar lenni, akkor az meg $1, vagy nagyobb nem $0. (Bár itt lehet, hogy nem arról van szó…)2006-04-01-15:40 #2053202#!/bin/bash
if [ „$0” == „mnt” ]; then
if [ -e /mnt/$1 ]; then
mount /dev/$1 /mnt/$1
if [ $? -eq 0 ]; then
echo „A(z) $1 sikeresen felcsatolva”
cd /mnt/$1
else
mkdir /mnt/$1
mount /dev/$1 /mnt/$1
if [ $? -eq 0 ]; then
echo ” A(z) $1 sikeresen felcsatolva ! ”
cd /mnt/$1
else
echo „Hiba1”
fi
fi
else
echo „Hiba2”
fi
else
if [ „$0” == „umnt” ]; then
umount /dev/$1
if [ $? -eq 0 ]; then
echo „A(z) $1 sikeresen lecsatolva”
else
echo „Hiba3”
fi
else
echo „Hiba4”
fi
fHi így változtattam meg. Most azt írja ki, hogy Hiba4, amikor beírom, hogy mnt hda1
2006-04-01-16:47 #2053203Davs wrote:#!/bin/bash
if [ „$0” == „mnt” ]; then
if [ -e /mnt/$1 ]; then
mount /dev/$1 /mnt/$1
if [ $? -eq 0 ]; then
echo „A(z) $1 sikeresen felcsatolva”
cd /mnt/$1
else
mkdir /mnt/$1
mount /dev/$1 /mnt/$1
if [ $? -eq 0 ]; then
echo ” A(z) $1 sikeresen felcsatolva ! ”
cd /mnt/$1
else
echo „Hiba1”
fi
fi
else
echo „Hiba2”
fi
else
if [ „$0” == „umnt” ]; then
umount /dev/$1
if [ $? -eq 0 ]; then
echo „A(z) $1 sikeresen lecsatolva”
else
echo „Hiba3”
fi
else
echo „Hiba4”
fi
fHi így változtattam meg. Most azt írja ki, hogy Hiba4, amikor beírom, hogy mnt hda1
Hi
2006-04-01-18:40 #2053204Ellenben a $1-et tényleg ajánlatos idézõjelbe rakni, mert bármi lehet… (amíg az $0 nem). Bár, ha biztos a dolog, akkor tök mindegy…
(Egyébként nem követsz el hibát, ha „mindent” idézõjelbe raksz.)„A $0 az a file neve teljes elérési úttal.”
Még ez sem igaz… attól függ hogy, hogy futtatja. Lehet ./… is.2006-04-01-19:25 #2053205#!/bin/bash
if [ $1 ]; then
if [ -e /mnt/$1 ]; then
umount /dev/$1
if [ $? -eq 0 ]; then
rmdir /mnt/$1
echo „The $1 succesfully umounted!”
else
echo „Error! See the log file at /var/log/mnt.log”
fi
else
mkdir /mnt/$1
mount /dev/$1 /mnt/$1>>LOG
if [ $? -eq 0 ]; then
echo „The $1 succesfully mounted!”
else
echo „Error! See the log file at /var/log/mnt.log”
fi
if [ -e /var/log/mnt.log ]; then
$LOG>>/var/log/mnt.log
else
touch /var/log/mnt.log
$LOG>>/var/log/mnt.log
fi
cd /mnt/$1
fi
fiHy!
2006-04-01-19:32 #2053206vizsla wrote:„A $0 az a file neve teljes elérési úttal.”
Még ez sem igaz… attól függ hogy, hogy futtatja. Lehet ./… is.2006-04-01-19:36 #2053207A megasztár közben volt idõm kicsit szorakozni. 😀
Ez mûködik, úgy ahogy eredetileg elképzelted. (mnt hda1, umnt hda1) Ha akarod bõvitsd ki a logolós résszel.#!/bin/bash
ERR=”HIBA”
DONE=”K[code]
#!/bin/bash
ERR=”HIBA”
DONE=”K2006-04-01-20:18 #2053208„Tehát az if [ „$0” == „mnt” ] akkor sem mûködik.”
Persze hogy nem :)… csak fel akartam hívni a figyelmet, hogy a „/sbin…” is csak leegyszerûsítése ennek a problémának. -
SzerzőBejegyzés
- Be kell jelentkezni a hozzászóláshoz.
legutóbbi hsz