http://www.cnblogs.com/chengmo/archive/2010/09/30/1839556.html
这个博客的shell编程总结的很好,谢谢博主
在刚刚学习写shell 批处理时候,进行逻辑运算中,少不了需要进行基础的:四则运算,这里说说在linux shell 里面简单的实现方法。
1.简单方法
[chengmo@centos5 ~]$ b=$((5*5+5-3/2))
[chengmo@centos5 ~]$ echo $b
29
在linux shell中,我们可以使用 $(())
将表达式放在括号中,即可达到运算的功能。
2.其它方法:
用:expr 实现运算
[chengmo@centos5 ~]$ expr 5 - 4
1
注意:将需要运算的表达式写入在expr 后面即可,保证 参数与运算符号中间有空格隔开。
类别
|
语法
|
说明
|
条件判断 |
expr1 \| expr2 |
如果 expr1 不是零或 null 则传回 expr1,否则传回 expr2。 |
expr1 \& expr2 |
如果 expr1 及 expr2 都不为零或 null,则传回 expr1,否则传回 0。 |
四则运算 |
expr1 + expr2 |
传回 expr1 加 expr2 后的值。 |
expr1 - expr2 |
传回 expr1 减 expr2 后的值。 |
expr1\* expr2 |
传回 expr1 乘 expr2 后的值。 |
expr1 / expr2 |
传回 expr1 除 expr2 后的值。 |
expr1 % expr2 |
传回 expr1 除 expr2 的余数。 |
大小判断 |
expr1 \> expr2 |
如果 expr1 大于 expr2 则传回 1,否则传回 0。如果 expr1 及 expr2 都是数字,则是以数字大小判断,否则是以文字判断。以下皆同。 |
expr1 \< expr2 |
如果 expr1 小于 expr2 则传回 1,否则传回 0。 |
expr1 = expr2 |
如果 expr1 等于 expr2 则传回 1,否则传回 0。 |
expr1 != expr2 |
如果 expr1 不等于 expr2 则传回 1,否则传回 0。 |
expr1 \>= expr2 |
如果 expr1 大于或等于 expr2 则传回 1,否则传回 0。 |
expr1 \<= expr2 |
如果 expr1 小于或等于 expr2 则传回 1,否则传回 0。 |
文字处理 |
expr1 : expr2 |
比较一固定字符串,即 regular expression。可以使用下列字符来辅助:
. 匹配一个字符。
$ 找字符串的结尾。
[list] 找符合 list 中的任何字符串。
* 找寻 0 个或一个以上在 * 之前的字。
\( \) 传回括号中所匹配的字符串。
|
3.使用let:
let与(()) 在shell编程中是可以互换的;它们在循环语句中控制变量变化非常有用;
使用let语句或者(())我们可以像C语言那样写程序~ 对于变量赋值,判断什么的不用繁琐的$VAR,
-eq等等, C语言中怎么用这里就怎么用,很方便
注:(())算数表达式的值在if和while判断时不用在前面加“$”;在echo输出值时需要加"$"
以下引自
http://unix-cd.com/unixcd12/article_2740.html
2.
使用
let
来进行算术计算
语法
:
let expression or (( expression
))
例子:
$ x=10 $
x=12
$ y=2 $ let "x
<10"
$ let x=x+2 $ echo
$?
$ echo $x 1
12 $ (( x
> 10 ))
$ let "x = x / (y+1)" $ echo
$?
$ echo $x $
0
4 $ if ((x
> 10 ))
$ (( x = x + 1 ))
> then echo x greater
$ echo $x
> else echo x not greater
5 fi
x
greater
循环语句通常使用一个增长的数字变量来进行控制。使用
let
命令,可以在
shell
脚本中使用算术表达式。这个命令允许使用长的整数运算。在上例中,
expression
代表一个
shell
变量的算术表达式和能够被
shell
识别的操作符,而((
))可以替
let
命令。
shell
能够识别的表达式如下所示:
操作符
描述
-
减去
!
逻辑相反
* /
%
乘,除,余数
+ -
加,减
<=
>=
< >
关系比较
==
!=
等于不等于
=
赋值
括号能够被用作改变表达式中计算的顺序,就像在
let "x=x/(y+1)"
中一样
注意双引号被用来忽略括号的特殊含义。同样如果你希望使用空格来分隔操作符和操作符的时候,就必须使用双引号,或者((
))语句:
let " x = x + (y /
2)"
或者
((
x= x+ (y / 2) ))
当使用逻辑和关系操作符,
(!,<=,>=,<,>,++,~=),
的时候,
shell
会返回一个代码变量,
?
会反映结果是真还是假,再一次说明,必须使用双引号来防止
shell
将大于和小于运算符当作
I/O
重定向。
4.浮点运算:
[chengmo@centos5 ~]$ expr 5.0 - 4
expr: 非法参数
[chengmo@centos5 ~]$ echo $((5.0-4))
-bash: 5.0-4: syntax error in expression (error token is ".0-4")
从上面运算结果,看来上面表达式,不足以支持浮点运算了。查阅资料才发现:bash 不支持浮点运算,如果需要进行浮点运算,需要借助bc,awk 处理。
方法一:
[chengmo@centos5 ~]$ c=$(echo "5.01-4*2.0"|bc)
[chengmo@centos5 ~]$ echo $c
-2.99
方法二:
[chengmo@centos5 ~]$ c=$(awk 'BEGIN{print 7.01*5-4.01 }')
[chengmo@centos5 ~]$ echo $c
31.04
注:在shell 中$() 与 ``等效。 中间包含命令语句执行,返回执行结果。
分享到:
相关推荐
在提供的"3个VB源码集合"中,我们可以看到三个关键领域的应用实例:文件内存搜索、纯代码四则运算。接下来,我们将详细讨论这两个知识点。 一、文件内存搜索 文件内存搜索是一种高级技术,用于在计算机的物理内存...
`bc` 是一个任意精度计算器语言,能够处理包括浮点运算在内的多种运算,并且支持条件判断、循环等结构化编程特性。 #### 用途说明 `bc` 命令的主要功能有: 1. **浮点运算**:能够处理浮点数的加减乘除以及更复杂...
- 提供实践任务,如四则运算、判断对错,促使学生运用所学知识解决实际问题,培养计算思维和信息意识。 7. **核心素养** - 信息意识:培养通过编程解决实际问题的意识。 - 计算思维:通过分析和综合,设计解决...
Perl具有C语言的许多特性,同时也融入了Shell编程、awk、sed等工具的优点,是一种功能全面、用途广泛的编程语言。 #### 1.2 如何获取Perl? 可以通过官方网站或各大软件仓库下载Perl。对于Windows用户,可以考虑...
Python的基础语法包括变量定义、数据类型(如整型、浮点型、字符串、布尔型、列表、元组、字典等)、流程控制(如if-else条件语句、for和while循环)、函数定义与调用、异常处理等。理解这些基本元素是掌握Python的...
- **继承与多态**:继承允许子类继承父类的属性和方法,多态则让不同类的对象可以通过同一接口进行操作。 - **模板**:C++提供了一种泛型编程机制,允许程序员编写通用代码。 #### 五、Linux环境下编程 由于描述中...
1. **Dhrystone测试**:主要关注字符串处理能力,不涉及浮点运算。此测试旨在考察编译器优化水平、代码效率、内存缓存性能以及整数数据类型的处理效率等。由于Dhrystone测试的结果受到多种因素的影响,因此它是一种...
- **浮点硬件**:可以查看和调试浮点运算相关的硬件细节。 - **向量单元**:支持查看向量运算单元的状态。 - **操作系统辅助信息**:获取有关操作系统的信息,如内存区域属性。 #### 十五、总结 通过上述内容可以...
【361冲刺4】是针对Python编程语言的一次学习冲刺,旨在帮助学员在短时间内迅速提升Python技能。在这个阶段的学习中,我们将会深入探讨Python的核心概念、语法特性以及实际应用,以便于更好地理解和掌握这门强大的...
- **UNIX Shell风格注释**:使用井号(#)进行注释,同样适用于单行注释。 示例: ```php # 这是一条单行注释 ``` #### 二、数据类型与变量 **2.1 变量类型** PHP是一种弱类型语言,变量的类型根据其赋值...
例如,`atof()`、`atoi()`和`atol()`将字符串转化为浮点、整数和长整数,`gcvt()`进行浮点数到字符串的四舍五入转换,`strtod()`、`strtol()`和`strtoul()`分别将字符串转换为浮点、长整和无符号长整数,`toascii()`...
在 Python Shell 中可以使用 `help()` 函数来获取各种帮助信息。 - **`help()`**: 调用此函数时,将启动交互式帮助系统。 - **`help(m)`**: 显示关于模块 `m` 的帮助信息。 - **`help(f)`**: 显示关于函数 `f` 的...