2017-01-29 12 views
1

人。私は一般的にLinuxやシェルスクリプトに慣れていません。質問があります。計算操作を数え、シェルスクリプトからファイルに書き込む

私は、次のような単純な電卓があります

input="yes" 
while [[ $input = "yes" ]] 
do 

    PS3="Press 1 for Addition, 2 for subtraction, 3 for multiplication and 4 for division: " 
    select math in Addition Subtraction Multiplication Division 
    do 
     case "$math" in 
     Addition) 
      echo "Enter first no:" 
      read num1 
      echo "Enter second no:" 
      read num2 
      result=`expr $num1 + $num2` 
      COUNTER=COUNTER+1 
      echo Answer: $result 
      break 
     ;; 
     Subtraction) 
      echo "Enter first no:" 
      read num1 
      echo "Enter second no:" 
      read num2 
      result=`expr $num1 - $num2` 
      echo Answer: $result 
      break 
     ;; 
     Multiplication) 
      echo "Enter first no:" 
      read num1 
      echo "Enter second no:" 
      read num2 
      result=`expr $num1 * $num2` 
      echo Answer: $result 
      break 
     ;; 
     Division) 
      echo "Enter first no:" 
      read num1 
      echo "Enter second no:" 
      read num2 
      result=$(expr "scale=2; $num1/$num2" | bc) 
      echo Answer = $result 
      break 
     ;; 
     *) 
      echo Choose 1 to 4 only!!!! 
      break 
     ;; 
    esac 
    done 

done 

私が欲しいのは、成功し操作するための「2 + 5 = 7」のように、1であることを意味する操作を(カウントできるようにすることですし、いくつかのカウンター変数は+ 1になり、何か他のものに+1します)ユーザーが電卓を停止するまで何かを入力します。次にカウンタ変数(実行された操作の総数を保持する)は、新しいファイルの中に書き込まれます。どうすればいいですか、誰かが私に例を挙げることができますか?

答えて

1

あなたはカウンターを使用することができます。

  • 算術演算の($?)の状態を確認した後、((count++))に成功した操作の後にループ
  • インクリメント前のカウンタをcount=0を設定するにはに、カウントを書きますファイルがprintf "%d\n" "$count" > file

なぜ新しいファイルに書き込むかわからない時間。これが望ましい動作であれば、毎回新しいファイル名を生成できます。ファイル名をoperation.txt.Nとすると、おそらくNはカウンタです。

PS3="Press 1 for Addition, 2 for subtraction, 3 for multiplication, 4 for division and 5 to Quit: " 
select math in Addition Subtraction Multiplication Division Quit 
... existing code here ... 

をそして、このケースを追加します:

Quit) 
     input=no 
     break 
    ;; 
+0

私はWhileループから抜け出すときだから私は 'printfのを」記述する必要が

あなたは、ユーザーが選択できることをオプションとしてQuitを追加することができます%d \ n "" $ count ">ファイル'? whileループから抜け出す方法の例を教えてもらえますか? – Calihog

+0

1から4以外のオプションを選択したときに、ループから抜け出すロジックはすでにあります。ループの後にprintfを置くことができます。 – codeforester

+0

いいえ、ユーザーが1-4以外のものを入力すると、再度入力するように求められます。 :) – Calihog

関連する問題