Nowe posty

xx System pakietów jest uszkodzony (Linux Ubuntu 20.04 LTS) (3)
2022-10-01, 15:44:17
xx Otoczenie najkrótszej frazy (2)
2022-09-25, 12:18:46
xx Skrypt do otwarcia i zamknięcia plików (2)
2022-09-19, 21:18:41
xx potrzebuje by ktoś mi wytłumaczył jedną żecz (4)
2022-09-16, 23:14:22
clip Zmiana ustawień punktu montowania (2)
2022-09-07, 23:20:08
xx Czarny ekran na start - linux mint (2)
2022-09-07, 14:46:31
xx Przydatne Linki (12)
2022-09-07, 14:33:34
xx Czy jest to potrzebne w domu ? (1)
2022-09-07, 08:26:40
xx Lupa. (5)
2022-09-04, 00:47:38
xx problem z wyburzaniem dell inspirion 15 3552 (1)
2022-09-03, 19:47:29

Autor Wątek: Sprawdzanie katalogów - problem ze skryptem  (Przeczytany 5373 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