2017-01-29 37 views
1

guys。我一般是Linux和shell脚本的新手,我有一个问题。计算计算操作并将它们从shell脚本写入文件

我有以下简单的计算器:

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 

所有我想要的是能够计数操作(意思是对于全成操作为+1,像“2 + 5 = 7”和一些计数器变量变为+1 ..然后是别的,再次+1)直到用户输入一些东西来停止计算器。然后,计数器变量(保存所执行操作的总数)应写入新文件中。我该怎么做,或者有人能给我一个例子?

回答

1

您可以使用计数器:

  • 设置count=0循环
  • 增量检查运算
  • 的状态($?)后成功运行后,计数器,((count++))之前写的计数一个文件与printf "%d\n" "$count" > file

不知道为什么你要写入一个新的文件时间。如果这是所需的行为,那么您每次都可以生成一个新的文件名。可能你可以将你的文件命名为operation.txt.N,其中N是计数器。

您可以添加Quit作为一个选项,用户可以选择:

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的“ %d \ n“”$ count“> file'?你能给我一个例子如何摆脱while循环吗? – Calihog

+0

当用户选择除了1到4以外的选项时,您已经拥有了跳出循环的逻辑。如果这是您想要的,则可以在循环后放置printf。 – codeforester

+0

不,当用户输入1-4之外的东西时,会要求他再次输入。 :) – Calihog

相关问题