2016-05-23 15 views
0

Iました。このbashスクリプトで言及したエラー:ここで言及したように、私は空のループを探した行21:予期しないトークンの近くに構文エラーが `行わ「その後、:行21:`行わ」

line 21: syntax error near unexpected token `done' 
line 21: ` done' 

他の質問、私は何も見ません。どんな考え?

#!/bin/bash 

while read -a line; do 
    : 
    for word in ${array[*]}; do 
     let last_index=${#arr[*]}-1 
     bool=false 
     if [[ $word != [1-9]* && bool==true ]]; then 
      echo -n $word 
     else if [[ $word != [1-9]* && bool==false ]]; then 
       bool=false 
       echo -n "_$word" 
     else if [[ $word == ${array[last_index]} ]]; then 
       date=${word//./ } 
       for element in $date; do 
        element=${element/0} 
       done 
       echo " $date" 
     else echo -n " $word " 
     fi 
    done 
done 

答えて

3

あなたは3つのif文を持っている1 fiを、唯一持っているので、doneが期待されていません。 else ifではなくelifを使用する必要があります。

#!/bin/bash 

while read -a line; do 
    : 
    for word in ${array[*]}; do 
     let last_index=${#arr[*]}-1 
     bool=false 
     if [[ $word != [1-9]* && bool==true ]]; then 
      echo -n $word 
     elif [[ $word != [1-9]* && bool==false ]]; then 
      bool=false 
      echo -n "_$word" 
     elif [[ $word == ${array[last_index]} ]]; then 
      date=${word//./ } 
      for element in $date; do 
       element=${element/0} 
      done 
      echo " $date" 
     else echo -n " $word " 
     fi 
    done 
done 

それとも、それ以上の第二と第三if文をインデントし、行方不明fiマーカーを追加する必要があります。

なお、colonコマンドは無害ですが、このスクリプトでは何も役に立ちません。

関連する問題