2012-04-08 17 views
1

Ich habe ein Skript wie folgt bekommen:bash - Syntaxfehler in der Nähe von unerwartetem Token '<‘

dyski=$(df -h) 

while read wiersz; do 

i=0; 
for token in $wiersz 
do 

    case $i in 
     0) 
      tresc="$tresc\nSystem plików: $token"; 
     ;; 

     1) 
      tresc="$tresc\nRozmiar całkowity: $token"; 
     ;; 

     2) 
      tresc="$tresc\nUżyte miejsce : $token"; 
     ;; 

     3) 
      tresc="$tresc\nDostępne miejsce: $token"; 
     ;; 

     4) 
      tresc="$tresc\nProcentowe użycie: $token"; 
     ;; 
    esac 

    i=$((i+1)) 
done 

tresc="$tresc\n" 

done < <(echo "$dyski") 

Wenn ich es auf meinem Mandriva laufen, es funktioniert gut. Aber wenn ich es auf den SLES11 verschiebe, gibt es einen Fehler:

./diskcheck.sh: line 42: syntax error near unexpected token <' ./diskcheck.sh: line 42: done < <(echo "$dyski")'

Was ist falsch daran? Vielen Dank im Voraus für Hilfe.

+0

Ich sehe '<<' .... –

+0

Sieht aus, als hättest du zwei "<" Zeichen, Kumpel. –

Antwort

2

Ich vermute, Sie haben den Fehler gemacht, davon auszugehen, dass /bin/shbash überall ist. Eine Reihe von Linux-Distributionen verwenden einfachere Shells (oft dash, manchmal ksh) als /bin/sh; Wenn Sie bash-spezifische Erweiterungen wie <(pipeline) Syntax verwenden möchten, sollten Sie explizit bash als Shell verwenden.

Verwandte Themen