Shell自学之运算符和echo(W3C)
上面理论知识,最下面有我做的测试的例子:
10.Shell运算符
expr是一款表达式计算工具,使用它能完成表达式的求值操作
例:val=`expr 2 + 2`;echo "${val}"
注意:
表达式和运算符之间要有空格,2+2是错误的,2 + 2是正确的
完整的表达式要被``包含
A.算术运算符(假定两个变量a为10,b为20)
+ : `expr $a + $b` 结果为30
- : `expr $a - $b` 结果为-10
* : `expr $a \* $b` 结果为200 乘号(*)前边必须加反斜杠(\)才能实现乘法运算
/ : `expr $b / $a` 结果为2
% : `expr $b % $a` 结果为0
= : a=$b 把变量b的值赋给a
==: [ $a == $b ] 返回false (暂时不会用,只知道可以用来判断)
!=: [ $a != $b ] 返回true
if判断:
if [ $a == $b ]
then
echo "a 等于 b"
else
echo "a 不等于 b"
fi
注意条件表达式必须要放在方括号之间,并且要有空格
B.关系运算符($a为10,$b为20)
-eq : [ $a -eq $b ] 返回false,检查相等,相等返回true
-ne : [ $a -ne $b ] 返回true,检查相等,不相等返回true
-gt : [ $a -gt $b ] 返回false,检查左边的数是否大于右边的数
-lt : [ $a -lt $b ] 返回true,检查左边的数是否小于右边的数
-ge : [ $a -ge $b ] 返回false,检测左边的数是否大于等于右边的
-le : [ $a -le $b ] 返回true,检测左边的数是否小于等于右边的
C.布尔运算符
! : [ !false ] 返回true,非运算
-o : [ $a -lt 20 -o $b -gt 100] 返回true,或运算
-a : [ $a -lt 20 -o $b -gt 100] 返回false,与运算
D:逻辑运算符
&& : [[ $a -lt 100 && $b -gt 100 ]] 返回 false,逻辑与
|| : [[ $a -lt 100 || $b -gt 100 ]] 返回 true,逻辑或
E.字符串运算符(a为"abc",b为"efg")
= : [ $a = $b ] 返回false,检查两个字符串是否相等,相等返回true
!= : [ $a != $b ] 返回 true,检查两个字符串是否相等,不相等返回true
-z : [ -z $a ] 返回 false,检测字符串长度是否为0,为0时返回true
-n : [ -n $a ] 返回 true,检测字符串长度是否为0,不为0时返回true
str : [ $a ] 返回 true,检测字符串是否为空,不为空返回true
F.文件测试运算符(暂时用不到,以后用到再看)
-b file 检测文件是否是块设备文件,如果是,则返回 true。 [ -b $file ] 返回 false。
-c file 检测文件是否是字符设备文件,如果是,则返回 true。 [ -c $file ] 返回 false。
-d file 检测文件是否是目录,如果是,则返回 true。 [ -d $file ] 返回 false。
-f file 检测文件是否是普通文件(既不是目录,也不是设备文件),如果是,则返回 true。 [ -f $file ] 返回 true。
-g file 检测文件是否设置了 SGID 位,如果是,则返回 true。 [ -g $file ] 返回 false。
-k file 检测文件是否设置了粘着位(Sticky Bit),如果是,则返回 true。 [ -k $file ] 返回 false。
-p file 检测文件是否是有名管道,如果是,则返回 true。 [ -p $file ] 返回 false。
-u file 检测文件是否设置了 SUID 位,如果是,则返回 true。 [ -u $file ] 返回 false。
-r file 检测文件是否可读,如果是,则返回 true。 [ -r $file ] 返回 true。
-w file 检测文件是否可写,如果是,则返回 true。 [ -w $file ] 返回 true。
-x file 检测文件是否可执行,如果是,则返回 true。 [ -x $file ] 返回 true。
-s file 检测文件是否为空(文件大小是否大于0),不为空返回 true。 [ -s $file ] 返回 true。
-e file 检测文件(包括目录)是否存在,如果是,则返回 true。 [ -e $file ] 返回 true。
11.echo命令:
A:显示普通字符串
echo "It is a test"
echo It is a test
B:显示转义字符
echo "\"It is a test\"" 结果为:"It is a test"
C:显示变量
read命令从标准输入中读取一行,并把输入行的每个字段的值指定给shell变量
例子(.sh脚本):
read name
echo "$name It is a test"
执行后(等待输入):
OK #标准输入
OK It is a test #输出
D:显示换行
echo -e "OK!\n" # -echo 开启转义,\n换行,输入OK之后换行
E:显示不换行
echo -e "OK! \c" # -echo 开启转义,\c不换行,输入OK之后不换行
echo "It is a test"
结果为:OK! It is a test
F:显示结果定向至文件
echo "It is s test" > myfile
echo "It is s test" >> myfile
G:原样输出字符串,不进行转义或取变量(用单引号)
echo '$name\"' 结果为:$name\"
H:显示命令的执行结果
echo `date` 显示当前日期
#!/bin/bash
a=10;
b=20;
echo "a + b = " `expr $a + $b`;
echo "a - b = " `expr $a - $b`;
echo "a / b = " `expr $a / $b`;
echo "b / a = " `expr $b / $a`;
# 记住乘法要转义,前面加个\
echo "a * b = " `expr $b \* $a`;
echo "a % b = " `expr $b % $a`;
c=$a;
echo "c = $c";
# 判断等于与不等于
if [ $a == $b ]
then
echo "$a == $b : a 等于 b"
fi
if [ $a != $b ]
then
echo "$a != $b : a 不等于 b"
fi
# if---else---判断
if [ $a != b ]
then
echo "$a != $b : a 不等于 b "
else
echo "$a == $b : a 等于 b "
fi
# 这个输不出?疑惑点
# echo "a == b : [ $a == $b ]";
# echo "a != b : [ $a != $b ]";
if [ $a -eq $b ]
then
echo "$a -eq $b : a 等于 b";
else
echo "$a -eq $b : a 不等于 b";
fi
if [ $a -ne $b ]
then
echo "$a -ne $b : a 不等于 b";
else
echo "$a -ne $b : a 等于 b";
fi
# gt和ge是大于和大于等于
if [ $a -gt $b ]
then
echo "$a -gt $b : a 大于 b";
else
echo "$a -gt $b : a 小于 b";
fi
# lt和le是小于和小于等于
if [ $a -lt $b ]
then
echo "$a -lt $b : a 小于 b";
else
echo "$a -lt $b : a 大于 b";
fi
##################################################################################
#!/bin/bash
#布尔运算符
echo "布尔运算符:"
a=10;
b=20;
echo "-o表示或,有一个为真结果为真"
if [ $a -gt 100 -o $b -lt 100 ]
then
echo "$a -gt 100 -o $b -lt 100 : 返回true";
else
echo "$a -gt 100 -o $b -lt 100 : 返回false";
fi
echo "-a表示与,全为真时才为真"
if [ $a -lt 100 -a $b -lt 100 ]
then
echo "$a -lt 100 -a $b -lt 100 : 返回true";
else
echo "$a -lt 100 -a $b -lt 100 : 返回false";
fi
#逻辑运算符,自我感觉与-o和-a没区别
echo "逻辑运算符";
#记住格式:只有下面是正确的,有以下两种错误写法
#[ [ $a -lt 100 && $b -gt 100 ] ];第一个括号和第二个括号间不要空格
#[ $a -lt 100 && $b -gt 100 ];不加括号也是错的
if [[ $a -lt 100 && $b -gt 100 ]]
then
echo "$a -lt 100 && $b -gt 100 : 结果为true";
else
echo "$a -lt 100 && $b -gt 100 : 结果为false";
fi
if [[ $a -lt 100 || $b -lt 100 ]]
then
echo "$a -lt 100 || $b -lt 100 : 结果为true";
else
echo "$a -lt 100 || $b -lt 100 : 结果为false";
fi
####################################################################################
#!/bin/bash
#测试字符串运算符
echo "字符串运算符:";
a="abc";
b="def";
echo "= 检测两个字符串是否相等 : "
if [ a = b ]
then
echo " $a = $b 的结果为 : true";
else
echo " $a = $b 的结果为 : false";
fi
echo "!= 检查两个字符串不相等:"
if [ $a != $b ]
then
echo " $a != $b 的结果为 : true";
else
echo " $a != $b 的结果为 : false";
fi
echo "-z 检查字符串的长度是否为0 : ";
if [ -z $a ]
then
echo "$a 的字符串长度为 0 ";
else
echo "$a 的字符串长度不为 0 ";
fi
echo "-n 检查字符串的长度不为0 : ";
if [ -n $b ]
then
echo "$b 的字符串长度不为0 ";
else
echo "$b 的字符串长度为0 ";
fi
echo "str 检查字符串是否为空,不为空返回true(没看懂) : ";
if [ $a ]
then
echo "$a 不为空";
else
echo "$a 为空";
fi
##################################################################################
#!/bin/bash
#显示普通字符串
echo "It is a test";
#显示转义字符
echo "\"It is a test\"";
#显示变量(等待用户输入)
read name
echo "$name It is a test";
#显示换行 -e代表的开启转义,\n表示换行
echo -e "OK!\n" ;
echo "It is a test";
#显示不换行,\c表示不换行
echo -e "OK! \c";
echo "This is a test";
#原样输出,不进行转义或取变量
echo '$name\"';
#显示命令的执行结果
echo `date`;
Shell自学之运算符和echo(W3C)的更多相关文章
- Linux学习——shell编程之运算符
shell编程之运算符 一:shell中常见算术运算符号和优先级 二:算术运算符 Shell 变量:是弱类型!不能进行加减乘除!比较麻烦! 例子 :shell变量弱类型 a=11 b=22 echo ...
- shell 6基本运算符
shell支持多种运算符: * 算数运算符 * 关系运算符 * 布尔运算符 * 字符串运算符 * 文件测试运算符 算数运算符 + 加 `expr $a + $b` 结果为 30 - 减 `expr $ ...
- 『忘了再学』Shell基础 — 20、Shell中的运算符
目录 1.Shell常用运算符 2.Shell中数值运算的方法 (1)方式一 (2)方式二 (3)方式三(推荐) 1.Shell常用运算符 Shell中常用运算符如下表: 优先级数值越大优先级越高,具 ...
- Linux Shell基础 Bash常见命令 echo命令
概述 shell中常见的命令echo. 输出命令:echo echo命令的输出内容如果没有特殊含义,则将原内容输出到屏幕:如果输出内容有特殊含义,则输出打印其含义. 命令格式如下: [root@loc ...
- shell的比较运算符
运算符 描述 示例 文件比较运算符 -e filename 如果 filename 存在,则为真 [ -e /var/log/syslog ] -d filename 如果 filename 为目录, ...
- linux shell “(())” 双括号运算符使用
导读 在刚开始学习inux shell脚本编程时候,对于它的 四则运算以及逻辑运算.估计很多朋友都感觉比较难以接受.特变逻辑运算符"[]"使用时候,必须保证运算符与算数 之间有空格 ...
- shell之算数运算符、逻辑运算符、关系运算符、布尔运算符、文件测试运算符
注意事项: (1)bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用: (2)完整的表达式要被 ` ` 包含,注意这个字符不是常用的单引号,在 Es ...
- linux shell (()) 双括号运算符使用
估计很多朋友都感觉比较难以接受.特变逻辑运算符"[]"使用时候,必须保证运算符与算数 之间有空格. 四则运算也只能借助:let,expr等命令完成. 今天讲的双括号"(( ...
- shell编程 之 运算符
1 shell运算符简介 Shell 和其他编程语言一样,支持多种运算符,包括: 算数运算符 形如:val=`expr 2 + 2`:echo "两数之和为 : $val" ...
随机推荐
- 关于hbase中的hbase-site.xml 配置详解
该文档是用Hbase默认配置文件生成的,文件源是 hbase-default.xml hbase.rootdir 这个目录是region server的共享目录,用来持久化HBase.URL需要是'完 ...
- field.setAccessible(true) 简介
今天查看别人写的代码时,发现这样一句代码,顿时来了兴趣. 需要注意setAccessible 并不是在Field中的,而是在AccessibleObject中. 下面是AccessibleObject ...
- Go语言标准库_输入/输出
Go语言标准库_输入/输出 转载节选自<Go语言标准库> Reader 接口 type Reader interface { Read(p []byte) (n int, err erro ...
- oracle导出dmp文件的2种方法
使用exp和expdp导出数据 1.exp导出数据命令 exp gd_base/@192.168.13.211/oanet file=D:\export\gd_base.dmp log=D:\expo ...
- Maven+SSM框架搭建【spring+springmvc+mybatis】
本案例用到:ssm[spring+springmvc+mybatis]框架 数据库:mysql (推荐使用mysql 或者 sqlserver .oracle太大,一般大型项目才会用到) 开发工具: ...
- beta冲刺4-咸鱼
昨天的问题: 我的社团数据库表项的处理,代码修改后结果无法显示. 帖子内容无法显示出来. 首页图像未替换 登陆整合没有完成 今天的完成: 服务器部署成功 页面背景修改.(已上传,未确认实装.) 任务截 ...
- C语言第四次博客作业
一.PTA实验作业 题目1.梅森数 1.本题PTA提交列表(要提交列表,不是结果) 2. 设计思路(此处用流程图最好) 1.定义三个变量n,num,count,且初始化count为1 2.读取一个数n ...
- Alpha冲刺置顶随笔
项目名称:城市安全风险管控系统 小组成员: 张梨贤.林静.周静平.黄腾飞 Alpha冲刺随笔 Alpha冲刺Day1:http://www.cnblogs.com/linlkg/p/7896980.h ...
- Flask 学习 十六 部署
部署流程 manage.py 部署命令 每次安装升级只需运行deploy命令即可完成操作 @manager.command def deploy(): """执行部署任务 ...
- Mac使用brew安装软件
Homebrew官方网站:https://brew.sh/1,安装brew,Mac中打开Termal输入命令: /usr/bin/ruby -e "$(curl -fsSL https:// ...