linux shell 运算符 一览
来源:互联网 发布:精易api编程助手 编辑:程序博客网 时间:2024/05/16 02:44
Shell Operator
shell 和其他编程语言一样,具有多种操作符(赋值操作符、算术运算符、逻辑操作符、关系运算符、位运算符、条件操作符、逗号运算符)。这些操作符可以组成复杂的运算表达式。
赋值操作符
操作符 描述
= 初始化或者修改变量的值
+= 追加变量的值
示例 1
test.sh 文件的内容如下
string=hello
string+=" world"
echo $string
在命令提示符下输入 ./test.sh,执行结果如下:
hello world
算术操作符
操作符 描述
+ 加法运算 - 减法运算 * 乘法运算 / 除法运算(小数点之后的部分被丢弃) % 取模数运算(取余数) ** 幂运算 += 加赋值运算 -= 减赋值运算 *= 乘赋值运算 /=
除赋值运算 %=
取模赋值运算 --
自加运算(分为前缀和后缀形式) 注释 1
++
自减运算(分为前缀和后缀形式) 注释 1
注释 1:shell 的自加、自减操作符在使用上和 c 语言一样。-- 或者 ++ 出现在变量前面是前缀形式,先运算后赋值;-- 或者 ++ 出现在变量后面是后缀形式,先赋值后运算。
shell 中的整型变量是 32 位有符号数,范围为 -2^31 ~ 2^32 -1。如果算术运算的结果超过这个范围将溢出。
示例 2
test.sh 文件的内容如下
let x=2
let y=3
let z=6
let m=$(((x**y+z)/2-1))*x%5
let z*=3
let n=x++
let k=++y
((x++))
((y++))
echo x=$x
echo y=$y
echo z=$z
echo m=$m
echo n=$n
echo k=$k
在命令提示符下输入 ./test.sh,执行结果如下:
x=4
y=5
z=18
m=2
n=2
k=4
在数字常量表达式中,使用 base#number 可以将一个数字从任何进制转换成十进制。
示例 3
test.sh 文件的内容如下
echo binary=$((2#110))
echo ternary=$((3#110))
echo octal=$((8#110))
echo decimal=$((10#110))
echo hexdecimal=$((16#110))
在命令提示符下输入 ./test.sh,执行结果如下:
binary=6
ternary=12
octal=72
decimal=110
hexdecimal=272
逻辑操作符
操作符 描述 && 逻辑与运算 || 逻辑或运算 !
逻辑非运算
1 expression1 && expression2,只有两个表达式的运算结果都为非 0 值,逻辑与运算的结果才为 1;否则为 0。
2 expression1 || expression2,只有两个表达式的运算结果都为 0 值,逻辑或运算的结果才为 0;否则为 1。
3 !expression,表达式为非 0 值,则逻辑非运算的结果为 0;否则为 1。
4 逻辑运算的结果只能是 1(true)或者 0(false)。
5 逻辑运算可以用于算术运算和字符串运算上下文。
示例 4
test.sh 文件的内容如下
echo 1\&\&2=$((1&&2))
echo 1\|\|0=$((1||0))
echo 2\&\&0=$((2&&0))
echo \!0=$((!0))
echo \!2=$((!2))
在命令提示符下输入 ./test.sh,执行结果如下:
1&&2=1
1||0=1
2&&0=0
!0=1
!2=0
示例 5
test.sh 文件的内容如下
x=2
y=3
if [ "$x" = 2 ] && [ "$y" = 3 ]
then
echo x=$x and y=$y
else
echo x\!=$x or y\!=$y
fi
在命令提示符下输入 ./test.sh,执行结果如下:
x=2 and y=3
关系运算符
操作符 描述 -gt
数值大于
-lt
数值小于
-ge
数值大于等于
-le
数值小于等于
-eq
数值等于
-ne
数值不等于
>
数值大于 注释 1
<
数值小于 注释 1 >=
数值大于等于 注释 1 <=
数值小于等于 注释 1 ==
数值等于 注释 1 !=
数值不等于 注释 1
注释 1:进行数值比较时需要使用双括号进行算术扩展 ((expression1 OP expression2))。
1 进行数值比较时,可以使用 [ expression1 OP expression2 ],OP 可以为 -gt、-lt、-ge、-le、-eq、-ne。也可以使用 ((expression1 OP expression2)),OP 可以为 >、<、>=、<=、==、!=。这几个关系运算符都是测试整数表达式 expression1 和 expression2 之间的大小关系。
2 >、<、==、!= 也可以进行字符串比较。
3 进行字符串比较时,== 可以使用 = 替代。
4 == 和 != 进行字符串比较时,可以使用 [ string1 OP string2 ] 或者 [[ string1 OP string2 ]] 的形式。
5 > 和 < 进行字符串比较时,需要使用 [[ string1 OP string2 ]] 或者 [ string1 \OP string2 ]。也就是使用 [] 时,> 和 < 需要使用反斜线转义。
示例 6
test.sh 文件的内容如下
let x=2**5
let y=3**2
if [ $x -ge $y ]
then
echo max=$x
else
echo max=$y
fi
if (($x == $y))
then
echo $x equal $y
else
echo $x not equal $y
fi
在命令提示符下输入 ./test.sh,执行结果如下:
max=32
32 not equal 9
示例 7
test.sh 文件的内容如下
string1=abc
string2=abd
if [ $string1 \> $string2 ]
then
echo $string1 is greater $string2 with ASCII
else
echo $string1 is not greater $string2 with ASCII
fi
if [[ $string1 > $string2 ]]
then
echo $string1 is greater $string2 with ASCII
else
echo $string1 is not greater $string2 with ASCII
fi
if [ $string1 == $string2 ]
then
echo $string1 is equal $string2 with ASCII
else
echo $string1 is not equal $string2 with ASCII
fi
if [[ $string1 = $string2 ]]
then
echo $string1 is equal $string2 with ASCII
else
echo $string1 is not equal $string2 with ASCII
fi
在命令提示符下输入 ./test.sh,执行结果如下:
abc is not greater abd with ASCII
abc is not greater abd with ASCII
abc is not equal abd with ASCII
abc is not equal abd with ASCII
位运算符
操作符 描述 & 按位与运算 | 按位或运算 ^ 按位异或运算 ~ 按位取反运算 << 按位左移运算 >> 按位右移运算 &=
按位与赋值运算 |=
按位或赋值运算 ^=
按位异或赋值运算 <<=
按位左移赋值运算 >>=
按位右移赋值运算
1 shell 的位操作符在使用上和 c 语言一样。位操作符在 shell script 中使用频率不是很高。
示例 8
test.sh 文件的内容如下
x=2
y=3
echo x\&y=$((x&y))
echo x\|y=$((x|y))
echo x\^y=$((x^y))
echo \~y=$((~y))
echo x\<\<y=$((x<<y))
echo x\>\>y=$((x>>1))
((x<<=2))
echo x=$x
在命令提示符下输入 ./test.sh,执行结果如下:
x&y=2
x|y=3
x^y=1
~y=-4
x<<y=16
x>>y=1
x=8
条件操作符
操作符 描述 ? :
if-then-else-fi 的操作符表达形式
1 shell 的条件操作符在使用上和 c 语言一样。形式为 expression1 ? expression2 : expression3。如果表达式 expression1 为真,则条件表达式的值为表达式 expression2 的值;否则为 expression3 的值。
2 expression2 和 expression3 必须是整数算术表达式,不能是字符串。
示例 9
test.sh 文件的内容如下
let x=2**5
let y=3**2
if (($x >= $y))
then
let max=$x
else
let max=$y
fi
max1=$(($x>=$y?$x+$y:$x-$y))
echo max_number=$max
echo max_number=$max1
在命令提示符下输入 ./test.sh,执行结果如下:
max_number=32
max_number=41
逗号操作符
操作符 描述 , 连接多个算术运算
1 shell 的逗号操作符在使用上和 c 语言一样。多个算术运算都会被执行,但是只有最后一个算术运算的结果作为整个表达式的结果。
2 逗号操作符主要用于循环操作中。
示例 10
test.sh 文件的内容如下
x=2
y=3
z=$((x++, x+y--))
echo x=$x
echo y=$y
echo z=$z
在命令提示符下输入 ./test.sh,执行结果如下:
x=3
y=2
z=6
shell 和其他编程语言一样,具有多种操作符(赋值操作符、算术运算符、逻辑操作符、关系运算符、位运算符、条件操作符、逗号运算符)。这些操作符可以组成复杂的运算表达式。
赋值操作符
示例 1
test.sh 文件的内容如下
string=hello
string+=" world"
echo $string
在命令提示符下输入 ./test.sh,执行结果如下:
hello world
算术操作符
注释 1:shell 的自加、自减操作符在使用上和 c 语言一样。-- 或者 ++ 出现在变量前面是前缀形式,先运算后赋值;-- 或者 ++ 出现在变量后面是后缀形式,先赋值后运算。
shell 中的整型变量是 32 位有符号数,范围为 -2^31 ~ 2^32 -1。如果算术运算的结果超过这个范围将溢出。
示例 2
test.sh 文件的内容如下
let x=2
let y=3
let z=6
let m=$(((x**y+z)/2-1))*x%5
let z*=3
let n=x++
let k=++y
((x++))
((y++))
echo x=$x
echo y=$y
echo z=$z
echo m=$m
echo n=$n
echo k=$k
在命令提示符下输入 ./test.sh,执行结果如下:
x=4
y=5
z=18
m=2
n=2
k=4
在数字常量表达式中,使用 base#number 可以将一个数字从任何进制转换成十进制。
示例 3
test.sh 文件的内容如下
echo binary=$((2#110))
echo ternary=$((3#110))
echo octal=$((8#110))
echo decimal=$((10#110))
echo hexdecimal=$((16#110))
在命令提示符下输入 ./test.sh,执行结果如下:
binary=6
ternary=12
octal=72
decimal=110
hexdecimal=272
逻辑操作符
1 expression1 && expression2,只有两个表达式的运算结果都为非 0 值,逻辑与运算的结果才为 1;否则为 0。
2 expression1 || expression2,只有两个表达式的运算结果都为 0 值,逻辑或运算的结果才为 0;否则为 1。
3 !expression,表达式为非 0 值,则逻辑非运算的结果为 0;否则为 1。
4 逻辑运算的结果只能是 1(true)或者 0(false)。
5 逻辑运算可以用于算术运算和字符串运算上下文。
示例 4
test.sh 文件的内容如下
echo 1\&\&2=$((1&&2))
echo 1\|\|0=$((1||0))
echo 2\&\&0=$((2&&0))
echo \!0=$((!0))
echo \!2=$((!2))
在命令提示符下输入 ./test.sh,执行结果如下:
1&&2=1
1||0=1
2&&0=0
!0=1
!2=0
示例 5
test.sh 文件的内容如下
x=2
y=3
if [ "$x" = 2 ] && [ "$y" = 3 ]
then
else
echo x\!=$x or y\!=$y
fi
在命令提示符下输入 ./test.sh,执行结果如下:
x=2 and y=3
关系运算符
注释 1:进行数值比较时需要使用双括号进行算术扩展 ((expression1 OP expression2))。
1 进行数值比较时,可以使用 [ expression1 OP expression2 ],OP 可以为 -gt、-lt、-ge、-le、-eq、-ne。也可以使用 ((expression1 OP expression2)),OP 可以为 >、<、>=、<=、==、!=。这几个关系运算符都是测试整数表达式 expression1 和 expression2 之间的大小关系。
2 >、<、==、!= 也可以进行字符串比较。
3 进行字符串比较时,== 可以使用 = 替代。
4 == 和 != 进行字符串比较时,可以使用 [ string1 OP string2 ] 或者 [[ string1 OP string2 ]] 的形式。
5 > 和 < 进行字符串比较时,需要使用 [[ string1 OP string2 ]] 或者 [ string1 \OP string2 ]。也就是使用 [] 时,> 和 < 需要使用反斜线转义。
示例 6
test.sh 文件的内容如下
let x=2**5
let y=3**2
if [ $x -ge $y ]
then
echo max=$x
else
echo max=$y
fi
if (($x == $y))
then
echo $x equal $y
else
echo $x not equal $y
fi
在命令提示符下输入 ./test.sh,执行结果如下:
max=32
32 not equal 9
示例 7
test.sh 文件的内容如下
string1=abc
string2=abd
if [ $string1 \> $string2 ]
then
echo $string1 is greater $string2 with ASCII
else
echo $string1 is not greater $string2 with ASCII
fi
if [[ $string1 > $string2 ]]
then
echo $string1 is greater $string2 with ASCII
else
echo $string1 is not greater $string2 with ASCII
fi
if [ $string1 == $string2 ]
then
echo $string1 is equal $string2 with ASCII
else
echo $string1 is not equal $string2 with ASCII
fi
if [[ $string1 = $string2 ]]
then
echo $string1 is equal $string2 with ASCII
else
echo $string1 is not equal $string2 with ASCII
fi
在命令提示符下输入 ./test.sh,执行结果如下:
abc is not greater abd with ASCII
abc is not greater abd with ASCII
abc is not equal abd with ASCII
abc is not equal abd with ASCII
位运算符
1 shell 的位操作符在使用上和 c 语言一样。位操作符在 shell script 中使用频率不是很高。
示例 8
test.sh 文件的内容如下
x=2
y=3
echo x\&y=$((x&y))
echo x\|y=$((x|y))
echo x\^y=$((x^y))
echo \~y=$((~y))
echo x\<\<y=$((x<<y))
echo x\>\>y=$((x>>1))
((x<<=2))
echo x=$x
在命令提示符下输入 ./test.sh,执行结果如下:
x&y=2
x|y=3
x^y=1
~y=-4
x<<y=16
x>>y=1
x=8
条件操作符
1 shell 的条件操作符在使用上和 c 语言一样。形式为 expression1 ? expression2 : expression3。如果表达式 expression1 为真,则条件表达式的值为表达式 expression2 的值;否则为 expression3 的值。
2 expression2 和 expression3 必须是整数算术表达式,不能是字符串。
示例 9
test.sh 文件的内容如下
let x=2**5
let y=3**2
if (($x >= $y))
then
let max=$x
else
let max=$y
fi
max1=$(($x>=$y?$x+$y:$x-$y))
echo max_number=$max
echo max_number=$max1
在命令提示符下输入 ./test.sh,执行结果如下:
max_number=32
max_number=41
逗号操作符
1 shell 的逗号操作符在使用上和 c 语言一样。多个算术运算都会被执行,但是只有最后一个算术运算的结果作为整个表达式的结果。
2 逗号操作符主要用于循环操作中。
示例 10
test.sh 文件的内容如下
x=2
y=3
z=$((x++, x+y--))
echo x=$x
echo y=$y
echo z=$z
在命令提示符下输入 ./test.sh,执行结果如下:
x=3
y=2
z=6
- linux shell 运算符 一览
- linux shell 运算符
- Linux Shell运算符
- Linux shell 比较运算符
- linux shell 运算符介绍
- Linux Shell基本运算符
- Linux Shell比较运算符
- Linux Shell 之 Shell 运算符
- Linux目前流行Shell一览(图)
- Linux Shell变量和运算符笔记
- Linux 之 shell 比较运算符
- linux shell “(())” 双括号运算符使用
- linux shell “(())” 双括号运算符使用
- Linux shell运算符、逻辑表达式详解
- Linux 之 shell 比较运算符
- Linux 之 shell 比较运算符
- Linux 之 shell 比较运算符
- linux shell (()) 双括号运算符使用
- 解密NtQueryVirtualMemory
- OpenCvSharp+VS2012+Windows 64bit 安装配置
- 斯坦福大学公开课2-------数组问题 (续)
- Informatica PowerCenter 架构、组件及开发步骤(转PPT)
- Android开发--FileInputStream/OutStream/Sdcard写入
- linux shell 运算符 一览
- 2013网上购票经历
- 安装谷歌浏览器
- 去掉Win7快捷方式小箭头
- 安装和编译boost
- ffmpeg使用语法
- MATLAB产生连续均匀分布的随机数组——unifrnd
- 仙剑奇侠传五前传 VM镜像版 已出!
- C++笔记(五、六)