Nowe posty

xx Problem ze sterownikami. (4)
Dzisiaj o 18:09:24
xx Instalacja xfce4 (2)
Dzisiaj o 16:20:17
xx Serie kompilacji bez instalacji dla “emerge” w Gentoo (2)
2024-04-08, 18:40:04
xx Plasma 6 w Neonie ssie trochę mniej ... (17)
2024-04-05, 10:03:46
xx Problem z Linux Lite po instalacji (3)
2024-04-03, 14:23:40
xx Jak właczyć num locka przy starcie systemu debian 12? (12)
2024-04-02, 17:43:54
xx Brak dźwieku w systemie. (5)
2024-04-02, 16:13:41
xx Dystrybucja pod HP Omen (7)
2024-03-29, 11:33:05
xx [Poradnik] Wyszukiwanie Sterowników (2)
2024-03-27, 21:08:23
xx Ile pingwinów? (1)
2024-03-27, 08:59:24

Autor Wątek: Sprawdzanie katalogów - problem ze skryptem  (Przeczytany 5588 razy)

  • Gość
Sprawdzanie katalogów - problem ze skryptem
« dnia: 2007-08-28, 11:59:26 »
witam,
mam problem ze skryptem, który na moje oko powinien działać poprawnie.
Oto fragment,w którym wyrzuca błąd:
### Test that each of the data directories exists

for d in `echo $DATA_DIRECTORY | awk '{split($0, a, ":"); for (i in a) print a[i]; }'`
do
if [ ! -d $d ]
then
echo "$d cannot be found."
exit 1
elif [ -d $NIC_DIRECTORY$d ]
then
# Clear out old tracking files

cd $NIC_DIRECTORY$d

if [ "x$SILENT" = "x" ]
then
echo "Checking for old tracking files in $NIC_DIRECTORY$d"
fi

for j in `ls *-nic.* | awk 'BEGIN{FS="-nic"} {print $1}'`
do
if [ ! -f $DATA_DIRECTORY/$j ]
then
if [ "x$SILENT" = "x" ]
then
echo "remove $NIC_DIRECTORY$d/$j-nic.*"
fi

rm -f $NIC_DIRECTORY$d/$j-nic.*
fi
done
fi
done
błąd składni w pobliżu nieoczekiwanego tokenu 'do
w najbardziej zewnetrznej petli. jesli ktos bylbyw stanie pomoc moge przeslac caly skrypt.

--edit ZipoKing--
Wrzuciłem kod do znacznika BBCode, zmiana tytułu+ wątek przesunięty do bardziej odpowiadającej kategorii.

ZipoKing

  • Gość
Sprawdzanie katalogów - problem ze skryptem
« Odpowiedź #1 dnia: 2007-08-28, 12:29:38 »
W 1-szym for IMHO powinno być
for i in $a; do echo $i; done
albo coś takiego...

xavery

  • Gość
Sprawdzanie katalogów - problem ze skryptem
« Odpowiedź #2 dnia: 2007-08-28, 17:05:01 »
Cytat: wludzik
błąd składni w pobliżu nieoczekiwanego tokenu 'do
w najbardziej zewnetrznej petli. jesli ktos bylbyw stanie pomoc moge przeslac caly skrypt.
Na moje ślepe, starcze oko to ten fragment wygląda OK a przy próbie wykonania, shell nie zgłasza błędów składniowych. Mogą być dwie przyczyny nie działania całości. Pierwsza to niewłaściwy format danych zwracany przez zagnieżdżone wywołania w pętli for lub (co chyba bardziej prawdopodobne) błąd leży gdzie indziej a shell zgłasza błąd właśnie w tej linii. Zdarzą się tak stosunkowo często przy braku zamknięcia jakiegoś bloku for/while/if... Myślę, że dobrze by było poznać całość skryptu.

arctgx

  • Gość
Sprawdzanie katalogów - problem ze skryptem
« Odpowiedź #3 dnia: 2007-08-28, 17:19:28 »
Nawiasem: warto się zastanowić nad ujęciem wartości zmiennych w cudzysłowy, np. "$a" na wypadek, gdyby zawierały spacje czy niektóre nietypowe znaki, które powłoka mogłaby traktować w dziwny sposób.

xavery

  • Gość
Sprawdzanie katalogów - problem ze skryptem
« Odpowiedź #4 dnia: 2007-08-28, 21:09:38 »
Cytat: arctgx
Nawiasem: warto się zastanowić nad ujęciem wartości zmiennych w cudzysłowy, np. "$a" na wypadek, gdyby zawierały spacje czy niektóre nietypowe znaki, które powłoka mogłaby traktować w dziwny sposób.
Powiem więcej :) Tego typu zapis jak poniżej:
$NIC_DIRECTORY$d/$j-nic.*
warto zapisać tak:
${NIC_DIRECTORY}${d}/${j}-nic.*
żeby było wiadomo co jest zmienną a co tekstem
Z cudzysłowami różnie bywa i należy na nie uważać, ponieważ zapis:
for i in $a; do
znaczy zupełnie coś innego niż:
for i in "$a"; do