Linux 各种运算符
- 算术运算符
算术运算符,常用的有+
、-
、*
、/
、%
、++
、--
、**
+
- 加法运算符[root@www ~]$ expr 1 + 1
2
[root@www ~]$ echo $(( 1 + 1 ))
2
-
- 减法运算符[root@www ~]$ expr 1 - 1
0
[root@www ~]$ echo $(( 1 - 1 ))
0
*
- 乘法运算符[root@www ~]$ expr 2 \* 2
4
[root@www ~]$ echo $(( 2 * 2 ))
/
- 除法运算符[root@www ~]$ expr 2 \/ 2
1
[root@www ~]$ echo $(( 2 / 2 ))
1
%
- 取余运算符[root@www ~]$ expr 2 % 2
0
[root@www ~]$ echo $(( 10 % 2 ))
0
**
- 幂运算符[root@www ~]$ echo $(( 2 ** 4 ))
16
++
- 增加运算符[root@www ~]$ variable=0
[root@www ~]$ (( variable++ ))
[root@www ~]$ echo $variable
1
#-------------------------------------
[root@www ~]$ variable=0
[root@www ~]$ let variable++
[root@www ~]$ echo $variable
1
--
- 减少运算符[root@www ~]$ variable=100
[root@www ~]$ (( variable-- ))
[root@www ~]$ echo $variable
99
#------------------------------------
[root@www ~]$ variable=100
[root@www ~]$ let variable--
[root@www ~]$ echo $variable
99
- 关系运算符
关系运算符,常用的有<
、<=
、>
、>=
、=
、==
、!=
<
- 小于运算符[root@www ~]$ echo $(( 1 < 2 ))
1 # 返回值为0表示(false),返回值为1表示(true) [root@www ~]$ (( 1 < 2 ));echo $?
0 # 返回值为0表示(tree),返回值为1表示(false) [root@www ~]$ [[ 1 < 2 ]];echo $?
0 # 返回值为0表示(true),返回值为1表示(false)<=
- 小于或等于运算符[root@www ~]$ echo $(( 1 <= 2 ))
1 # 返回值为0表示(false),返回值为1表示(true) [root@www ~]$ (( 1 < 2 ));echo $?
0 # 返回值为0表示(tree),返回值为1表示(false)
>
- 大于运算符[root@www ~]$ echo $((1 > 2))
1 # 返回值为0表示(false),返回值为1表示(true) [root@www ~]$ ((1 > 2));echo $?
0 # 返回值为0表示(tree),返回值为1表示(false) [root@www ~]$ [[ 1 > 2 ]];echo $?
0 # 返回值为0表示(true),返回值为1表示(false)
>=
- 大于或等于运算符[root@www ~]$ echo $((1 >= 2))
1 # 返回值为0表示(false),返回值为1表示(true) [root@www ~]$ ((1 >= 2));echo $?
0 # 返回值为0表示(tree),返回值为1表示(false)
=
- 等于运算符[root@www ~]$ [ "word" = "word" ];echo $?
# 该行为是进行字符串比较
[root@www ~]$ [[ "word" = "word" ]];echo $?
# 该行为是进行字符串比较
==
- 等于运算符[root@www ~]$ expr 1 == 1
1 # 返回值为0表示(false),返回值为1表示(true) [root@www ~]$ echo $((1 == 1))
1 # 返回值为0表示(false),返回值为1表示(true) [root@www ~]$ ((1 == 1));echo $?
0 # 返回值为0表示(true),返回值为1表示(false) [root@www ~]$ [[ 1 == 1 ]];echo $?
0 # 返回值为0表示(true),返回值为1表示(false)
!=
- 不等于运算符[root@www ~]$ expr 1 != 1
0 # 返回值为0表示(false),返回值为1表示(true) [root@www ~]$ echo $((1 != 1))
0 # 返回值为0表示(false),返回值为1表示(true) [root@www ~]$ ((1 != 1));echo $?
1 # 返回值为0表示(true),返回值为1表示(false) [root@www ~]$ [[ 1 != 1 ]];echo $?
1 # 返回值为0表示(true),返回值为1表示(false)
- 逻辑运算符
逻辑运算符,常用的有&&
、||
、!
&&
- 逻辑与运算符[root@www ~]$ make && make install
# 只有当make命令成功执行时,才会执行后面的语句
[root@www ~]$ [ -f /etc/passwd -a -d /etc ];echo $?
# -a 等同于 &&
||
- 逻辑或运算符[root@www ~]$ make || echo "Make failed !"
# 当make执行失败时,才会执行后面的语句
[root@www ~]$ [ -f /etc/passwd -o -d /etc];echo $?
# -o 等同于 ||
!
- 逻辑非运算符[root@www ~]$ [ 1 -eq 1 ];echo $?
0
[root@www ~]$ [ ! 1 -eq 1 ];echo $?
1
# !真 = 假 , !假 = 真
# 也就是将结果取反,如果表达式为0则返回1,为1则返回0、
- 按位运算符
按位运算符,常用的有&
、|
、^
、~
、<<
、>>
、
&
- 按位与运算符[root@www ~]$ echo $((0 & 0))
0
[root@www ~]$ echo $((0 & 1))
0
[root@www ~]$ echo $((1 & 0))
0
[root@www ~]$ echo $((1 & 1))
1
# 由此得出,只有当两边的值都为true时,结果才为true
|
- 按位或运算符[root@www ~]$ echo $(( 0 | 0 ))
0
[root@www ~]$ echo $(( 0 | 1 ))
1
[root@www ~]$ echo $(( 1 | 0 ))
1
[root@www ~]$ echo $(( 1 | 1 ))
1
# 由此得出,只要有一个值为true,则结果为true
^
- 异或运算符[root@www ~]$ echo $(( 0 ^ 0 ))
0
[root@www ~]$ echo $(( 0 ^ 1 ))
1
[root@www ~]$ echo $(( 1 ^ 0 ))
1
[root@www ~]$ echo $(( 1 ^ 1 ))
0 #-----------------------------------------------
# 异或是运算二进制,两个值进行运算,同号为0,异号为1,例如:
[root@www ~]$ echo $((99^88)) # 开始运算,异或后为59,为什么?
59 # 这里为运算的过程,99和88进行异或,如果两个都是一样的就是0,不一样就是1
[root@www ~]$ echo "obase=2;ibase=10;99"|bc # 得出99的二进制
1011000
[root@www ~]$ echo "obase=2;ibase=10;88"|bc # 得出88的二进制
1100011
# 99 = 1011000
# 88 = 1100011
# 59 = 0111011 # 此处为上面两个二进制运算后的结果,
[root@www ~]$ echo "obase=10;ibase=2;0111011"|bc
59
# 最终结果是正确的,常用于互换两个变量的值,但该值一定是整数
~
- 取反运算符[root@www ~]$ echo $(( ~9 ))
<<
- 左移运算符[root@www ~]$ echo $((1<<2))
>>
- 右移运算符[root@www ~]$ echo $((2>>1))
- 文件测试符
文件测试有很多,如下:
-n
- 检测字符长度是否为0,不为0则返回true
-z
- 检测字符长度是否为0,为0则返回true
-eq
- 等于
-ge
- 大于等于
-gt
- 大于
-le
- 小于等于
-lt
- 小于
-ne
- 不等于
-ef
- 判断 file1
和 file2
是否具有相同的设备和inode
编号
-nt
- 判断 file
和 file2
哪一个文件比较新
-ot
- 判断 file
和 file2
哪一个文件比较旧
-b
- 判断文件是否存在,并且是块设备文件
-c
- 判断文件是否存在,并且是字符设备文件
-d
- 判断文件是否存在,并且是目录
-e
- 判断文件是否存在
-f
- 判断文件是否存在,并且是普通文件
-g
- 判断文件是否存在,并且设置了SGID位
-G
- 判断文件是否存在,并且GID有效
-h
- 判断文件是否存在,并且是一个符号链接(与-L
相同)
-k
- 判断文件是否存在,并且设置了粘着位
-L
- 判断文件是否存在,并且是一个符号链接(与-h
相同)
-O
- 判断文件是否存在,并且UID有效
-p
- 检测文件是否存在,并且具备命名管道
-r
- 判断文件是否存在,并且具备读权限
-s
- 判断文件是否存在,并且大小大于0
-S
- 判断文件是否存在,并且是一个套接字
-t
- 文件描述符是在一个终端打开的
-u
- 判断文件是否存在,并且设置了SUID位
-w
- 判断文件是否存在,并且具备写权限
-x
- 判断文件是否存在,并且具备执行权限
Linux 各种运算符的更多相关文章
- Linux Shell 运算符
Shell 和其他编程语言一样,支持多种运算符,包括: 算数运算符 关系运算符 布尔运算符 逻辑运算符 字符串运算符 文件测试运算符 原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 ...
- Linux shell运算符
双引号 --使用双引号可以引用除了字符$,`(单反号),\(反斜杠)外的任意字符或者字符串 --echo "参数的个数是$#" 单引号 --单引号与双引号类似,不同的是shell会 ...
- 【转】Awk 命令学习总结、AWk命令系列学习(linux shell)
前面的话 学习linux 的同人,都知道linux shell文本处理能力非常强大.有一组强大的文本处理工具:grep,sed,awk . 其中grep 经常用作查找匹配文本.sed用作文本编辑替换. ...
- Awk 命令学习总结、AWk命令系列学习(linux shell)
AWK基本语法 下面没有提到awk命令怎么使用了,你可以通过 运行:awk –h 查询到所有命令及参数!下面把awk作为一门语言分节介绍. linux awk 内置变量使用介绍 awk语言中,怎么 ...
- Linux 驱动开发
linux驱动开发总结(一) 基础性总结 1, linux驱动一般分为3大类: * 字符设备 * 块设备 * 网络设备 2, 开发环境构建: * 交叉工具链构建 * NFS和tftp服务器安装 3, ...
- 如何在Linux中结合示例使用'cat'和'tac'命令
上一篇我们讲到了cat的使用示例:https://www.cnblogs.com/WeiLian1024/p/11863057.html 本篇我们将继续延续Cat讲讲Tac 本文是我们讲讲Linux技 ...
- C学习笔记(八)字符输入输出和输入确认
缓冲区 缓冲区分为两类:完全缓冲(fully buffered)I/O和行缓冲(line-buffered)I/O.完全缓冲在缓冲区满时被清空(内容被发送至目的地).这种类型常出现在文件输入中.缓冲区 ...
- Python自学知识点----Day01
Linux 次方运算符** 操作系统:1).直接操纵硬件 2).将操纵硬件封装成系统调用,利用应用程序进行调用 操作系统:windows 用户群体大 macos 适用开发人员 Linux ...
- linux shell “(())” 双括号运算符使用
导读 在刚开始学习inux shell脚本编程时候,对于它的 四则运算以及逻辑运算.估计很多朋友都感觉比较难以接受.特变逻辑运算符"[]"使用时候,必须保证运算符与算数 之间有空格 ...
随机推荐
- POJ1446 Girls and Boys
Girls and Boys Time Limit: 5000MS Memory Limit: 10000K Total Submissions: 12747 Accepted: 5678 D ...
- hdu 4915 括号匹配+巧模拟
http://acm.hdu.edu.cn/showproblem.php?pid=4915 给定一个序列,由()?组成,其中?可以表示(或者),问说有一种.多种或者不存在匹配. 从左向右,优先填满n ...
- 万能头文件#include <bits/stdc++.h>
最近在做题的时候看到别人的题解发现别人都用这个 突然之间打开新世界的大门 去百度之后才知道#include <bits/stdc++.h>包含了目前所有的c++头文件 也就是说只要用#in ...
- postgresql 数据库路径迁移
迁移方法有两种:(1)重新初始化postgresql数据库,初始化时指定新的数据路径---PGDATA,然后在新的环境下将原有的数据库备份恢复一下.不过这个方法有点麻烦(2)直接将现有的数据库文件全部 ...
- WPF 定义Lookless控件的默认样式、 OnApplyTemplate 如何使用(实现方式、如何工作的)!
写的非常详细: 作者地址:https://www.cnblogs.com/atskyline/archive/2012/11/16/2773806.html 参考资料: http://www.code ...
- window.open新打开窗口与新开标签页
最近在使用window.open时忽略了一个细节问题:window.open新打开一个窗口,但是有时却是新打开一个窗口有时打开一个新标签页.虽然对一般的需求来说,这个两种情况都无所谓,但是对于那种有强 ...
- [WC2005]双面棋盘(线段树+并查集)
线段树+并查集维护连通性. 好像 \(700ms\) 的时限把我的常数超级大的做法卡掉了, 必须要开 \(O_2\) 才行. 对于线段树的每一个结点都开左边的并查集,右边的并查集,然后合并. \(Co ...
- MySQL随手记
一.MySQL数据迁移(由远端主机迁移到本地) 1.导出数据库mysqldump -u root -p db > dump_db_date.sqlroot: 账户db: 需要导出的数据库名 2. ...
- pinnet 计算云分区
fdisk /dev/xvdemne mnlEnterEnter 9G-98G-98G-478M-28G-28G-28G mw #设置文件格式mkfs -t ext4 /dev/xvde5mkfs - ...
- DNS 预解析
DNS 解析也是需要时间的,可以通过预解析的方式来预先获得域名所对应的 IP. <link rel="dns-prefetch" href="//yuchengka ...