linux 运算符,Shell 基本运算符

有各种不同的运算符shell都支持。本教程是基于默认shell(Bourne),所以我们要涵盖所有重要的Bourne Shell运算符。

有以下的运算符,我们将要讨论的:

算术运算符。

关系运算符。

布尔运算符。

字符串运算符。

文件测试操作。

Bourne shell的最初并没有任何机制来执行简单的算术,但它使用外部程序,无论是awk或必须简单的程序expr。

下面是简单的例子,把两个数相加:

#!/bin/shval=`expr 2 + 2`echo"Total value : $val"

这将产生以下结果:

Totalvalue:4

记下有以下几点:

运算符和表达式之间必须有空格,例如2+2是不正确的,因为它应该写成2 + 2。

``,称为倒逗号之间应包含完整的表达。

算术运算符:

算术运算符有以下Bourne Shell支持。

假设变量a=10,变量b=20:

运算符

描述

例子

+

Addition - Adds values on either side of the operator

`expr $a + $b` will give 30

-

Subtraction - Subtracts right hand operand from left hand operand

`expr $a - $b` will give -10

*

Multiplication - Multiplies values on either side of the operator

`expr $a * $b` will give 200

/

Division - Divides left hand operand by right hand operand

`expr $b / $a` will give 2

%

Modulus - Divides left hand operand by right hand operand and returns remainder

`expr $b % $a` will give 0

=

Assignment - Assign right operand in left operand

a=$b would assign value of b into a

==

Equality - Compares two numbers, if both are same then returns true.

[ $a == $b ] would return false.

!=

Not Equality - Compares two numbers, if both are different then returns true.

[ $a != $b ] would return true.

这是非常重要的,这里要注意,所有的条件式将放在方括号内,他们身边有一个空格,例如 [ $a == $b ]是正确的,为[$a==$b] 是不正确的。

所有的算术计算,使用长整数。

关系运算符:

Bourne Shell的支持,关系运算符的具体数值。这些运算符不能使用字符串值,除非它们的值是数字。

例如,运算符将努力检查10和20之间的关系,以及在“10”和“20”,但不是“10”和“21”之间。

假设变量a=10,变量b=20:

运算符

描述

示例

-eq

Checks if the value of two operands are equal or not, if yes then condition becomes true.

[ $a -eq $b ] is not true.

-ne

Checks if the value of two operands are equal or not, if values are not equal then condition becomes true.

[ $a -ne $b ] is true.

-gt

Checks if the value of left operand is greater than the value of right operand, if yes then condition becomes true.

[ $a -gt $b ] is not true.

-lt

Checks if the value of left operand is less than the value of right operand, if yes then condition becomes true.

[ $a -lt $b ] is true.

-ge

Checks if the value of left operand is greater than or equal to the value of right operand, if yes then condition becomes true.

[ $a -ge $b ] is not true.

-le

Checks if the value of left operand is less than or equal to the value of right operand, if yes then condition becomes true.

[ $a -le $b ] is true.

这里要注意,所有的条件式将放在方括号内,他们周围有一个空格,这是非常重要的,例如 [ $a <= $b ]是正确的, [$a <= $b]是不正确的。

布尔运算:

布尔运算符有以下Bourne Shell的支持。

假设变量一个变量b=10,然后变量b=20:

运算符

描述

示例

!

This is logical negation. This inverts a true condition into false and vice versa.

[ ! false ] is true.

-o

This is logical OR. If one of the operands is true then condition would be true.

[ $a -lt 20 -o $b -gt 100 ] is true.

-a

This is logical AND. If both the operands are true then condition would be true otherwise it would be false.

[ $a -lt 20 -a $b -gt 100 ] is false.

字符串运算符:

有下列字符串运算由Bourne Shell支持。

假设变量a=“abc”和变量b=“efg”:

运算符

描述

例子

=

Checks if the value of two operands are equal or not, if yes then condition becomes true.

[ $a = $b ] is not true.

!=

Checks if the value of two operands are equal or not, if values are not equal then condition becomes true.

[ $a != $b ] is true.

-z

Checks if the given string operand size is zero. If it is zero length then it returns true.

[ -z $a ] is not true.

-n

Checks if the given string operand size is non-zero. If it is non-zero length then it returns true.

[ -z $a ] is not false.

str

Check if str is not the empty string. If it is empty then it returns false.

[ $a ] is not false.

文件测试操作:

有以下是操作测试Unix文件相关联的各种属性。

假设一个的变量文件保存现有文件名“test”,其大小为100字节,有读,写和执行权限:

操作符

描述

示例

-b file

Checks if file is a block special file if yes then condition becomes true.

[ -b $file ] is false.

-c file

Checks if file is a character special file if yes then condition becomes true.

[ -b $file ] is false.

-d file

Check if file is a directory if yes then condition becomes true.

[ -d $file ] is not true.

-f file

Check if file is an ordinary file as opposed to a directory or special file if yes then condition becomes true.

[ -f $file ] is true.

-g file

Checks if file has its set group ID (SGID) bit set if yes then condition becomes true.

[ -g $file ] is false.

-k file

Checks if file has its sticky bit set if yes then condition becomes true.

[ -k $file ] is false.

-p file

Checks if file is a named pipe if yes then condition becomes true.

[ -p $file ] is false.

-t file

Checks if file descriptor is open and associated with a terminal if yes then condition becomes true.

[ -t $file ] is false.

-u file

Checks if file has its set user id (SUID) bit set if yes then condition becomes true.

[ -u $file ] is false.

-r file

Checks if file is readable if yes then condition becomes true.

[ -r $file ] is true.

-w file

Check if file is writable if yes then condition becomes true.

[ -w $file ] is true.

-x file

Check if file is execute if yes then condition becomes true.

[ -x $file ] is true.

-s file

Check if file has size greater than 0 if yes then condition becomes true.

[ -s $file ] is true.

-e file

Check if file exists. Is true even if file is a directory but exists.

[ -e $file ] is true.

C Shell 操作符:

以下链接将在C Shell运算符给出简单的用法。

Korn Shell 运算符:

以下链接将在Korn  Shell运算符给出简单的用法

¥ 我要打赏

纠错/补充

收藏

加QQ群啦,易百教程官方技术学习群

注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值