1. 程式人生 > >用shell寫一個簡易計算器,可以實現加、減、乘、除運算,假如腳本名字為1.sh,執行示例:./1.

用shell寫一個簡易計算器,可以實現加、減、乘、除運算,假如腳本名字為1.sh,執行示例:./1.

a-z 依次 腳本 als 示例 內置 數位 特殊字符 使用

用shell寫一個簡易計算器,可以實現加、減、乘、除運算,假如腳本名字為1.sh,執行示例:./1.sh 1 + 2

#!/bin/bash
if [ $# -ne 3 ]
then
   echo "參數個數應該為3,例如:$0 1 + 2"
   echo "當使用乘法時,需要加上脫義符號,例如:$0 1 \* 2"
   exit 1;
fi
num1=`echo $1|sed 's/[0-9.]//g'`
if [ -n "$num1" ]
then
    echo "$1不是數字"
    exit 1
fi
num3=`echo $3|sed 's/[0-9.]//g'`
if [ -n "$num3" ]
then
    echo "$3不是數字"
    exit 1
fi
case $2 in
   +)
    echo "scale=2;$1+$3" | bc
    ;;
   -)
    echo "scale=2;$1-$3" | bc
    ;;
   \*)
    echo "scale=2;$1*$3" | bc
    ;;
   /)
    echo "scale=2;$1/$3" | bc
    ;;
   *)
    echo "$2 不是運算符" 
    ;;
esac

解析:

$# 參數的數量

$0 當前執行的進程名


num1 -ne num2 不等於 [ 3 -ne $mynum ]


-n string 如果 string長度非零,則為真 [ -n "$myvar" ]


sed '【n1,n2】【[0-9a-zA-Z]】s/源字符串/目標字符串/g' filename
這裏n1,n2是指區間n1到n2行,“s”就是替換的命令,“g”為本行中全局替換,如果不加‘g’,則只替換該行中出現的第一 個。除了可以使用“/”作為分隔符外,還可以使用其他特殊字符如“#”或者“@”。


bc命令是一種支持任意精度的交互執行的計算器語言。bash內置了對整數四則運算的支持,但是並不支持浮點運算,而bc命令可以很方便的進行浮點運算。參數scale=2

是將bc輸出結果的小數位設置為2位


使用case,如果$2為+,輸出echo "scale=2;$1+$3" | bc

依次論推

如果$2不是加減乘除任一情況,則輸出echo "$2 不是運算符"

用shell寫一個簡易計算器,可以實現加、減、乘、除運算,假如腳本名字為1.sh,執行示例:./1.