2017-04-19 27 views
1

上記のエラーが発生しており、コード化できません。誰かがエラーをチェックし、私にそれを実行できるように私に知らせてもらうことができますか?これは置換アルゴリズムを使用しています。これが解決できるなら、非常に感謝します。ありがとうございました。予期しないトークンの近くで構文エラーが発生しました

#!/bin/bash 
# 
cnt=0 #page fault 
k=0 #pointer 
pg=(0 0 0 0) #frame_number 

IFS=";""," 

filecontent=`cat < Input.csv` 

array=($filecontent) 

echo -e "Page Fault \tpage 0 \t page 1\t page 2\tpage 3 " 

for ((a=0; a<${#array[@]}; ++a)) 

do 

    frame[$a]="-" 
    usebit[$a]= 0 


for pg in "${array[$a]}"; 

do 

    flag=false 

for ((a=0; a<${#array[@]}; ++a)); 

do 
    if [${frame[$b]} = $pg]; 

then 

    usebit[$b]=1 
    flag=true 
    break 

    fi 

done 

let check=0 

if [ $flag=false]; 

then 
    while ($check -le $array]; 

    if [${usebit[$k]}=1; 

    then 
     usebit[$k]=0 
     let "k++" 

    else 

     frame[$k]=$pg 
     usebit[$k]=1 

     echo "Page Fault = replace frame $k" 

     let "cnt++" 
     let "k++" 

    if [$k = $array]; 

    then 

     k=0 
    fi 

     break; 
    fi 

     if [$k = $array]; 

     then 

      k=0 

    fi 


     let "check++" 

    done 

    echo -e " $cnt \t\t ${pg[0]}\t ${pg[1]} \t ${pg[2]} \t ${pg[3]} " 
    done 

    echo "The number of page fault for page frame of 4 in clock policy 
    algorithm is $cnt" 
+1

いくつかの構文エラーがあります。良い出発点は、あなたのコードをシェルチェッカーに貼り付けることです:http://www.shellcheck.net/そしてあなたのコードはそのテストに合格します。 – odradek

+0

条件文とループをすべて終了しているわけではありません。 $ {usebit [$ k]} -eq 1]が '$ {usebit [$ k]} = 1'でなければならない場合は、' 'f''と' 'done''のいずれかが不一致とみなされます。 –

+0

単なる一例 - 少なくとも1つ以上あります –

答えて

2

http://www.shellcheck.net/シェルスクリプトの作成に役立ちます。このようにあなたのコードを見てからのエラー:

Line 32: 
if [${frame[$b]} = $pg]; 
^-- SC1009: The mentioned parser error was in this if expression. 
    ^-- SC1035: You need a space after the [ and before the ]. 
    ^-- SC1073: Couldn't parse this test expression. 
         ^-- SC1020: You need a space before the ]. 
         ^-- SC1072: Missing space before ]. Fix any mentioned problems and try again. 

Line 46: 
if [ $flag=false]; 
^-- SC1009: The mentioned parser error was in this if expression. 
    ^-- SC1073: Couldn't parse this test expression. 
       ^-- SC1020: You need a space before the ]. 
       ^-- SC1072: Missing space before ]. Fix any mentioned problems and try again. 

...のように...

+0

行23: "$ {array [$ a]}"のpgの場合は です。 ^ - SC1009:このforループでは、前述のパーサーエラーが発生しました。 これはどういう意味ですか? –

+0

次の行には、 '[...]'の中に必要なものが表示されます。 – Jakuje

+0

@Jakuje素敵なサイト、私の問題を解決してください。 +1 –

関連する問題