Shell expr的用法  bc 命令   let命令

数学运算

let命令  expr命令  bc命令  $(())   $[]

http://www.80ops.cn/archives/245.html

expr命令一般用于整数值,但也可用于字符串。

一般格式为:expr argument operator argument
expr也是一个手工命令行计数器。
expr 10 + 10 等价于 echo 10 + 10|bc
20
expr 1500 – 900 等价于 echo 1500 – 900 |bc
2400
expr 30 / 3 等价于 echo 30 / 3|bc
10
expr 30 / 3 / 2 等价于 echo 30 / 3 / 2 |bc
5
(注意运算符左右都有空格 ,如果没有空格表示是字符串连接)
使用乘号时,必须用反斜线屏蔽其特定含义。因为shell可能会误解显示星号的意义。
expr 30 \* 3 等价于 echo 30 \* 3 |bc
90
对于四则运算赋值操作
val2=10
val1=$(($val2 – 1)) 等价于 val1=$(expr $val2 – 1) 等价于 val1=$(echo $val2 – 1|bc)
echo $val1

写法也是比较多的

expr最重要的还是强大的字符串操作

1、提取指定字符的下标:expr index 内容 字符

例如
ind=`expr index "69lki" "k"`
echo $ind
4

ind=`expr index "69lki" "k"`
echo $ind
4

2、提取字符串的子串:expr substr 内容 起始位置 终点位置

例如
con=`expr substr "689sdfwe" "1" 3`
echo $con
689

3、计算字符串的长度
例如
con=`expr length "sdf"`
echo $con
3


bash Shell let命令 (2008-10-21 10:18:43)转载▼

http://blog.sina.com.cn/s/blog_5ac88b350100arnv.html
标签: 杂谈
整数运算一般通过 let 和 expr 这两个指令来实现,如对变量 x 加 1 可以写作:let "x = $x + 1" 或者 x=`expr $x + 1‘,个人感觉,二者差不多,前者表达比较简单,择优用之

在bash中,let可以用来做数值运算
bash-2.05b$ export n=20
bash-2.05b$ n=n+1
bash-2.05b$ echo $n
n+1
n+1并没有按照数字处理,而是安装字符串串连处理
这时候如果想实现n按照数值进行相加,则就需要let出手了
bash-2.05b$ export n=20
bash-2.05b$ let n+=1
bash-2.05b$ echo $n

在Bash Shell中,只能进行两个整数间的运算,其结果仍为整数.要进行算术
运算,需要使用let命令,语法为:
let expr
expr是一个包含项和操作符的表达式,项可以是一个变量或是一个整数常数,
当使用整数常数时,其默认为十进制整数,用户可以用radio#number来指定其它
形式的整数,其中radio定义了整数是几进制表示的,number是该整数的值.若
radio>10,那么数字字符可从0-9和A-Z.
在表达式中支持的操作符及其含义为:
+,-,*,/,% 加,减,乘,除,取模
>>,<<,&,^,| 左移,右移,位与,位异或,位或
?: 三元运算符.与C语言中的定义一致
~ 取补码
!,>=,<=,>,<,==,!=,&&,||
=,+=,-=,*=,/=,%=,<<=,>>=,&=,^=,|=
表达式式中也可以使用括号.括号或运算优先级的定义与一般计算机语言中的
相同.
let命令具有返回值.当计算结果(若有多个表达式时,以最后一个为准)为0时,
返回值为1,否则为0.
当表达式中含有shell的特殊字符(如|)时,需要用引用符('或")将其引用起来.
使用let时还需要注意的时,对于let x+y这样的式子,shell虽然计算了x+y的值
但却将结果丢弃,若不想这样,可以使用let sum=x+y将x+y的结果保存在变量sum中
另外还可以使用((和))操作符取代let命令,而且这样的话,还可以省去对算术
表达式的引用,如果想返回表达式的值,则需用$(())的格式.

if的条件中,“=”用于比较字符串;“-eq”用于比较整型数。


bc 命令
bc命令是一种支持任意精度的交互执行的计算器语言。bash内置了对整数四则运算的支持,但是并不支持浮点运算,
而bc命令可以很方便的进行浮点运算,当然整数运算也不再话下。

-i:强制进入交互式模式;
-l:定义使用的标准数学库;
-w:对POSIX bc的扩展给出警告信息;
-q:不打印正常的GNU bc环境信息;
-v:显示指令版本信息;
-h:显示指令的帮助信息。

参数
文件:指定包含计算任务的文件。

实例

算术操作高级运算bc命令它可以执行浮点运算和一些高级函数:

echo "1.212*3" | bc 

3.636 
设定小数精度(数值范围)
echo "scale=2;3/8" | bc
0.37
参数scale=2是将bc输出结果的小数位设置为2位。

进制转换

#!/bin/bash 
abc=
echo "obase=2;$abc" | bc
执行结果为:,这是用bc将十进制转换成二进制。
#!/bin/bash a
bc= echo "obase=10;ibase=2;$abc" | bc
执行结果为:,这是用bc将二进制转换为十进制。

计算平方和平方根:

echo "10^10" | bc 

echo "sqrt(100)" | bc

Shell expr的用法 bc 命令 let命令的更多相关文章

  1. shell expr的用法

    root@tcx4440-03:~# var=$var+1root@tcx4440-03:~# echo $var3+1 要想达到预期结果,用下列三种方法: (1)let "var+=1&q ...

  2. centos shell脚本编程1 正则 shell脚本结构 read命令 date命令的用法 shell中的逻辑判断 if 判断文件、目录属性 shell数组简单用法 $( ) 和${ } 和$(( )) 与 sh -n sh -x sh -v 第三十五节课

    centos   shell脚本编程1 正则  shell脚本结构  read命令  date命令的用法  shell中的逻辑判断  if 判断文件.目录属性  shell数组简单用法 $( ) 和$ ...

  3. bash shell学习笔记(一)—— 常用命令

    一.基本的bash shell命令 1.默认bash shell 提示符是美元符号($); 2.bash手册 使用man命令来访问存储在Linux系统上的手册页面,如: bogon:~ Mac$ ma ...

  4. linux管道命令grep命令参数及用法详解---附使用案例|grep

    功能说明:查找文件里符合条件的字符串. 语 法:grep [-abcEFGhHilLnqrsvVwxy][-A<显示列数>][-B<显示列数>][-C<显示列数>] ...

  5. centos shell脚本编程2 if 判断 case判断 shell脚本中的循环 for while shell中的函数 break continue test 命令 第三十六节课

    centos  shell脚本编程2 if 判断  case判断   shell脚本中的循环  for   while   shell中的函数  break  continue  test 命令   ...

  6. shell基础 -- grep、sed、awk命令简介

    在 shell 编程中,常需要处理文本,这里介绍几个文本处理命令. 一.grep 命令 grep 命令由来已久,用 grep 命令来查找 文本十分方便.在 POSIX 系统上,grep 可以在两种正则 ...

  7. Linux学习——shell编程之正则表达式和字符处理命令

    shell编程之正则表达式 一 正则表达式 1 什么是正则表达式 正则表达式用于描述字符排列和匹配模式的一种语法规则.它主要用于字符串的模式分隔.匹配.查找及替换操作. 2 shell编程之正则表达式 ...

  8. shell编程基础(六): 透彻解析查找命令find

    find 由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下.即使系统中含有网络文件系统( NFS),find命令在该文件系统中同样有效,只要你具有相应的权限. ...

  9. [ SHELL编程 ] 编程常用的ORACLE相关命令

    本文主要描述shell编程中常用的Oracle相关命令. 1.sqlplus -L/-S参数 sqlplus -L user/password #-L参数表示用户只尝试登录一次, 而不是在出错时再次提 ...

随机推荐

  1. 12.编写一个Java项目,定义包,在包下定义包含main方法的类,在main方法中声明8种基本数据类型的变量并赋值,练习数据类型转换。

    注意:float虽然是4个自减,但是它的取值范围却比8个字节的long要大. float和double只能用来作科学计算或者是工程计算,但在商业计算中我们要用java.math.BigDecimal, ...

  2. WPF 中Frame + Page 的使用

    1 在window 的设计的时候 ,中间需要进行页面切换的时候,顶一个Frame <Frame Name="MainPage"  NavigationUIVisibility ...

  3. SVN版本管理系统的安装 CentOS + Subversion + Apache + Jsvnadmin

    CI服务器:192.168.4.221 root用户操作                            建议安装前更新操作系统 # yum update 更新完成后重启 # reboot 安装 ...

  4. hdu1874 最短路模板题

    之所以做了第二道模板题还要写是因为发现了一些自己的问题 用的是dij 最简单的松弛 需要注意的地方是松弛的时候 判断dis[i]<dis[w]+tance[w][i]时 还要再判断 vis[i] ...

  5. github 有名的问题【ERROR: Permission to .git denied to user】

    小乌龙 以前一直是单兵做战,所以github repo对于我而言,只是一个存放.同步.备份代码的地方,协同作用完全没有体现出来. 最近跟朋友一起开发一个项目,他在github建了个公共的repo,我正 ...

  6. HTML: xhtml和html的區別

    XHTML 与 HTML 4.01 标准没有太多的不同. 另外,你应该马上使用小写字母编写HTML代码,同时绝不要养成忽略类似 </p> 标签的坏习惯. 最主要的不同: XHTML 元素必 ...

  7. he time that it takes to bring a block from disk into main memory

    DATABASE SYSTEM CONCEPTS, SIXTH EDITION There is a trade-off that the system designer must make betw ...

  8. xinwajueji

    #include<stdio.h> int map[10][10]={0}; int step[30]={0}; int max=99999; int ans[99]={0};  int ...

  9. html之内联元素与块状元素;

    html之内联元素与块状元素 一.html之内联元素与块状元素 1.块状元素一般比较霸道,它排斥与其他元素位于同一行内.比如div,并且width与height对它起作用. 2.内联元素只能容纳文本或 ...

  10. CC2541连接BTool教程

    一.简介 本篇介绍如何基于Smart RF(主芯片CC2541).Smart RF(主芯片CC2540).Usb Dongle,来使用软件BTool. 本篇暂时只介绍如何连接,不介绍如何使用BTool ...