bash - 意外令牌附近的语法错误`<'

时间:2012-04-08 09:18:28

标签: bash

我有一个这样的剧本:

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")

当我在Mandriva上运行时,它运行正常。但是当我将它移动到SLES11时,它会出错:

  

./ diskcheck.sh:line 42:意外令牌<' ./diskcheck.sh: line 42:附近的语法错误&lt; &lt;(echo“$ dyski”)'

它出了什么问题?在此先感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

我怀疑你错误地认为/bin/sh到处是bash。许多Linux发行版使用更简单的shell(通常为dash,有时为ksh)为/bin/sh;如果您想使用bash特定扩展名(例如<(pipeline)语法),则应明确使用bash作为shell。