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" ...
随机推荐
- Visual Studio 2017 Key 激活码
Visual Studio 2017(VS2017) 企业版 Enterprise 注册码:NJVYC-BMHX2-G77MM-4XJMR-6Q8QF Visual Studio 2017(VS201 ...
- java并发包——阻塞队列BlockingQueue及源码分析
一.摘要 BlockingQueue通常用于一个线程在生产对象,而另外一个线程在消费这些对象的场景,例如在线程池中,当运行的线程数目大于核心的线程数目时候,经常就会把新来的线程对象放到Blocking ...
- field.setAccessible(true) 简介
今天查看别人写的代码时,发现这样一句代码,顿时来了兴趣. 需要注意setAccessible 并不是在Field中的,而是在AccessibleObject中. 下面是AccessibleObject ...
- beta冲刺5
昨天的问题: 登陆页面的整合重新制作 各主机版本更迭 我的社团显示功能修改调整 主页的头部替换掉 +修复帖子无法显示内容的问题 +试着将邮箱等判定用正则表达式进行实时判定. 今天的完成: 主要是线下进 ...
- 20162330 实验二 《Java面向对象程序设计》 实验报告
2016-2017-2 实验报告目录: 1 2 3 4 5 20162330 实验二 <Java面向对象程序设计> 实验报告 课程名称:<程序设计与数据结构> 学生班级:162 ...
- 冲刺NO.8
Alpha冲刺第八天 站立式会议 项目进展 项目稳步进行,项目的基础部分如基本信息管理,信用信息管理等部分已相对比较完善. 问题困难 技术困难在短期内很难发生质的变化,而本项目由于选择了队员不太熟悉的 ...
- ResNet
 上图为单个模型 VGGNet, GoogleNet 都说明了深度对于神经网络的重要性. 文中在开始提出: 堆叠越多的层, 网络真的能学习的越好吗? 然后通过神经网络到达足够深度后出现的退化(deg ...
- Python入门代码练习
一.循环猜年龄程序,猜错三次则打印提示信息并退出循环,猜对也打印提示信息并退出循环 count=0while count < 3: num = input("猜年龄游戏:") ...
- EasyUI导航栏。
html: <div data-options="region:'west',split:true" title="导航栏菜单" style=" ...
- javaScript识别网址文本并转为链接文本
最近项目有个需求:用户之间发送消息时,如果发送者输入的信息中含有网址文本,要在接受者界面中显示网址链接,点击该链接直接跳转到网页.这个功能和 QQ 发送网址文本的效果非常像,可以说是一模一样的. 思路 ...