linux shell之数字加减

本文详细介绍了Shell脚本中进行算术运算的各种方法,包括let命令、方括号[]、圆括号(())以及用于浮点数计算的bc命令。通过具体的示例展示了这些命令如何在脚本中实现整数及浮点数的加减乘除运算。
  • let 、[ ]、(())以及可以处理浮点数的bc

  • let命令:变量前不加上“$”字符,像C语言 中两个init型变量之间相加

#!/bin/bash
NUM=10
let NUM++
echo ${NUM}
NUM1=20
let NUM2=NUM+NUM1
echo ${NUM2}
输出
1130
  • [ ]:命令与let命令相似,比如[NUM1+NUM2][ NUM1+NUM2 ]
#!/bin/bash
NUM1=10
NUM2=20
echo $[ $NUM1+$NUM2 ]
echo $[ NUM1+NUM2 ]
输出都为30

(()):与[ ]操作一样,只是在最外边要加上”$”

#!/bin/bash
NUM1=10

echo $(($NUM1+10))
echo $((NUM1+20))
输出 2030

expr命令使用

#!/bin/bash
NUM1=10

NUM=`expr 3 + 4`
echo $NUM
NUM2=$(expr $NUM1 + 20)
echo $NUM2
输出730,
#使用expr两个操作数与“+”之间要有空格,不然会得到其他结果

bc命令:可以计算浮点数已经进制之间的转换
通常与echo一起使用在通过管道”|”连接bc

#!/bin/bash
NUM=10
echo "3.01 + 4" | bc
echo "obase=2;$NUM" | bc

NUM1=1010
echo "obase=10;ibase=10;$NUM1" | bc

NUM2=20
result=`echo "obase=8;ibase=2;$NUM2" | bc`
echo $NUM2
echo "sqrt(100)" | bc
Linux系统中,可通过多种方式实现数字加减乘除运算,以下为几种常见方法: ### 使用Vim编写C语言程序 可以利用Vim编写C语言程序实现加减乘除运算。需要一个`main.c`文件完成两个数字的输入,并调用四个子程序`add.c`、`subtract.c`、`multiply.c`和`divide.c`,这四个子程序分别完成加、减、乘、除运算。完成源码文件编写后,编写`makefile`文件描述各源码文件间的依赖关系及最终生成可执行文件`main`的编译规则,最后通过`make`工具将源码编译生成可执行文件`main`并运行。示例如下: ```makefile # makefile 文件示例 CC = gcc CFLAGS = -Wall all: main main: main.o add.o subtract.o multiply.o divide.o $(CC) $(CFLAGS) -o main main.o add.o subtract.o multiply.o divide.o main.o: main.c $(CC) $(CFLAGS) -c main.c add.o: add.c $(CC) $(CFLAGS) -c add.c subtract.o: subtract.c $(CC) $(CFLAGS) -c subtract.c multiply.o: multiply.c $(CC) $(CFLAGS) -c multiply.c divide.o: divide.c $(CC) $(CFLAGS) -c divide.c clean: rm -f main main.o add.o subtract.o multiply.o divide.o ``` ```c // main.c 示例 #include <stdio.h> // 声明四个函数 int add(int a, int b); int subtract(int a, int b); int multiply(int a, int b); int divide(int a, int b); int main() { int num1, num2; printf("请输入两个整数: "); scanf("%d %d", &num1, &num2); printf("加法结果: %d\n", add(num1, num2)); printf("减法结果: %d\n", subtract(num1, num2)); printf("乘法结果: %d\n", multiply(num1, num2)); printf("除法结果: %d\n", divide(num1, num2)); return 0; } ``` ```c // add.c 示例 int add(int a, int b) { return a + b; } ``` ```c // subtract.c 示例 int subtract(int a, int b) { return a - b; } ``` ```c // multiply.c 示例 int multiply(int a, int b) { return a * b; } ``` ```c // divide.c 示例 int divide(int a, int b) { return a / b; } ``` 编译和运行: ```bash make ./main ``` ### 使用Linux Shellbash)脚本 #### 方法一 创建一个文件`jsq.sh`,通过`while`循环读取输入的两个数字和运算符,根据运算符进行相应运算并输出结果。示例代码如下: ```bash #!/bin/sh while read num1 fuhao num2 do if [ "$fuhao" == "+" -o "$fuhao" == "-" -o "$fuhao" == "/" -o "$fuhao" == "*" ] then val=$(echo "scale=6; $num1 $fuhao $num2" | bc) echo "$val" else echo "输入参数有问题" fi done ``` 给文件执行权限并运行: ```bash chmod +x jsq.sh ./jsq.sh ``` 按`Ctrl + C`结束程序。 #### 方法二 通过`read`命令读取两个数字和一个选择值,根据选择值进行相应的加减乘除运算。示例代码如下: ```bash #!/bin/bash read a b i case $i in 1) c=`expr $a + $b` echo $c ;; 2) c=`expr $a - $b` echo $c ;; 3) c=`expr $a \* $b` echo $c ;; 4) c=`expr $a / $b` echo $c ;; *) echo nothing ;; esac ``` 保存为脚本文件,赋予执行权限后运行即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值