资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

shell运算(加、减、乘、除)-创新互联

Abstract :

成都创新互联自2013年创立以来,是专业互联网技术服务公司,拥有项目成都网站建设、成都网站制作网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元宁化做网站,已为上家服务,为宁化各地企业和个人服务,联系电话:18982081108
1)  Linux shell 中使用 let , [ ] ,(( )) 三种运算符操作 shell 变量进行简单的基本运算;
2)Linux shell 中使用 expr 与 bc 两个程序实现高级运算;

1, Linux shell 变量的基本运算


数值作为常规变量直接赋值给变量,并且以字符串形式保存。

1.1 let 命令可以用于直接执行基本操作:
当我使用 let 的时候,我们不使用 $ 符号引用变量。

  1. no1=7;

  2. no2=8;

  3. echo "------------ let command -------------"

  4. let no1++;

  5. let no2--;

  6. let no1+=3;

  7. let no2-=5;

  8. let result=no1+no2;

  9. printf "let result=%d\n" $result;

shell运算(加、减、乘、除)

1.2 " [ ] "运算符跟 let 命令很相似:

"[ ]" 运算符里面可以使用 $ 符号引用变量,同时支持变量名与运算符之间不带空格。

  1. echo "----------------- [] operator ----------------"

  2. printf "no1:%d no2:%d \n" $no1 $no2;

  3. result1=$[ no1 + no2 ];

  4. printf "result1 = %d \n" $result1;

  5. result2=$[no1+no2 + 7];

  6. printf "result2 = %d \n" $result2;

  7. result3=$[ $no1+$no2+5 ];

  8. printf "result3 = %d \n" $result3;

  9. no2=$[ no2 + 1 ];

  10. printf "no1 = %d no2 = %d \n" $no1 $no2;

shell运算(加、减、乘、除)

1.3 " (( )) " 运算符跟 " [ ] " 运算符一样:
同样支持使用 $ 符号引用变量进行基本运算,同时支持变量名与运算符之间不带空格。
  1. echo "----------------- (( )) operator --------------"

  2. printf "no1: %d no2: %d \n" $no1 $no2;

  3. result1=$(( no1 + no2 ));

  4. printf "result1 = %d \n" $result1;

  5. result2=$((no1+no2+3));

  6. printf "result2 = %d \n" $result2;

  7. result3=$(( $no1+$no2 + 5))

  8. printf "result3 = %d \n" $result3;

shell运算(加、减、乘、除)

1.4 "expr" 命令同样可以用于变量的基本运算:
"expr" 命令同样支持 $ 符号引用变量进行基本运算,但是变量与运算符之间必须使用空格作为分隔符;
在使用 "expr" 命令对变量进行运算后,整个表达式必须使用 " ·expression · " 的模式赋值给变量,即包含在 " ` "符里面,
并且等效于 " $( expression ) " 模式。

  1. echo "---------------- expr command ---------------"

  2. printf "no1: %d no2: %d \n" $no1 $no2;

  3. result1=`expr 3 + 4`;

  4. printf "result1 = %d \n" $result1;

  5. result2=`expr $no1 + 4`;

  6. printf "result2 = %d \n" $result2;

  7. result3=`expr $no1 + $no2`;

  8. printf "result3 = %d \n" $result3;

  9. result4=`expr $no1+$no2`;

  10. printf "result4 = %d \n" $result4;

  11. result5=$(expr $no1 + 3);

  12. printf "result5 = %d \n" $result5;

  13. result6=$(expr $no1+4);

  14. printf "result6 = %d \n" $result6;

  15. result7=$(expr $no1+$no2);

  16. printf "result7 = %d \n" $result7;

shell运算(加、减、乘、除)
由上图实验结果所示," expr " 命令的表达式中,变量与运算符之间必须使用空格作为分隔符,
有一点我没搞明白的就是为什么42行的表达式已经错了,为什么在43行才报错。
" expr " 还支持许多运算表达式,大家在终端打个 expr --help 命令看看吧,o(∩_∩)o 哈哈。。。

上面所述的四种shell中执行变量运算的方式中不支持浮点运算!

2, Linux shell 中使用 bc 命令实现高级数学运算:


bc 命令使用 标准输入 stdin 作为输入;
bc 是一个支持精确的浮点运算的高级计算器;
bc 拥有相当多的输入选项,并且支持数学函数调用;
执行 bc --help 自行查看 bc 所支持的输入选项;

2.1 bc 命令使用标准输入 stdin 作为输入,并且支持浮点运算:
  1. echo "----------------- bc command ----------------"

  2. echo "4 * 0.56" | bc;

  3. no=48;

  4. result1=`echo "$no * 1.5" | bc`;

  5. echo "result1 = $result1";

shell运算(加、减、乘、除)

2.2 bc 命令支持运算精度设置:

通过附加参数可以给 bc 指定运算精度;
附加参数使用分号 " ; " 作为分隔符;

  1. result2=`echo "scale=9;$no / 3;" | bc`;

  2. echo "result2 = $result2";

shell运算(加、减、乘、除)

实验结果所示,使用分号 " ; " 加入附加参数 scale ,指定精度为 9 位小数;

2.3 使用 bc 进行数值的记数进制间转换:

通过 ibase=value 作为附加参数,指定输入变量的记数进制;
通过 obase=value 作为附加参数,指定输出变量的记数进制;

  1. no=100;

  2. echo "echo \"obase=2;ibase=10;$no\" | bc = `echo "obase=2;ibase=10;$no" | bc`";

  3. no=1000;

  4. echo "echo \"scale=5;obase=10;ibase=2;$no/3\" | bc = `echo "scale=5;obase=10;ibase=2;$no/3" | bc`";

shell运算(加、减、乘、除)

2.4 使用 bc 调用数学公式进行高级数学运算:

" sqrt(value) " 执行 value 的开方运算;
" value^index " 执行 value 的幂运算;

  1. echo "sqrt(100) = `echo "sqrt(100)" | bc`";

  2. echo "sqrt(100) = $(echo "sqrt(100)" | bc)";

  3. echo "10^3 = `echo "10^3" | bc`";

  4. echo "10^3 = $(echo "10^3" | bc)";

shell运算(加、减、乘、除)

另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


网页标题:shell运算(加、减、乘、除)-创新互联
文章网址:http://cdkjz.cn/article/cdsohj.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220