上面理论知识,最下面有我做的测试的例子:

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)的更多相关文章

  1. Linux学习——shell编程之运算符

    shell编程之运算符 一:shell中常见算术运算符号和优先级 二:算术运算符 Shell 变量:是弱类型!不能进行加减乘除!比较麻烦! 例子 :shell变量弱类型 a=11 b=22 echo ...

  2. shell 6基本运算符

    shell支持多种运算符: * 算数运算符 * 关系运算符 * 布尔运算符 * 字符串运算符 * 文件测试运算符 算数运算符 + 加 `expr $a + $b` 结果为 30 - 减 `expr $ ...

  3. 『忘了再学』Shell基础 — 20、Shell中的运算符

    目录 1.Shell常用运算符 2.Shell中数值运算的方法 (1)方式一 (2)方式二 (3)方式三(推荐) 1.Shell常用运算符 Shell中常用运算符如下表: 优先级数值越大优先级越高,具 ...

  4. Linux Shell基础 Bash常见命令 echo命令

    概述 shell中常见的命令echo. 输出命令:echo echo命令的输出内容如果没有特殊含义,则将原内容输出到屏幕:如果输出内容有特殊含义,则输出打印其含义. 命令格式如下: [root@loc ...

  5. shell的比较运算符

    运算符 描述 示例 文件比较运算符 -e filename 如果 filename 存在,则为真 [ -e /var/log/syslog ] -d filename 如果 filename 为目录, ...

  6. linux shell “(())” 双括号运算符使用

    导读 在刚开始学习inux shell脚本编程时候,对于它的 四则运算以及逻辑运算.估计很多朋友都感觉比较难以接受.特变逻辑运算符"[]"使用时候,必须保证运算符与算数 之间有空格 ...

  7. shell之算数运算符、逻辑运算符、关系运算符、布尔运算符、文件测试运算符

    注意事项: (1)bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用: (2)完整的表达式要被 ` ` 包含,注意这个字符不是常用的单引号,在 Es ...

  8. linux shell (()) 双括号运算符使用

    估计很多朋友都感觉比较难以接受.特变逻辑运算符"[]"使用时候,必须保证运算符与算数 之间有空格. 四则运算也只能借助:let,expr等命令完成. 今天讲的双括号"(( ...

  9. shell编程 之 运算符

    1 shell运算符简介 Shell 和其他编程语言一样,支持多种运算符,包括: 算数运算符 形如:val=`expr 2 + 2`:echo "两数之和为 : $val"    ...

随机推荐

  1. 使用Java理解逻辑程序

    1.Java常见的注释有哪些,语法是怎样的? 1)单行注释用//表示,编译器看到//会忽略该行//后的所文本 2)多行注释/* */表示,编译器看到/*时会搜索接下来的*/,忽略掉/* */之间的文本 ...

  2. xilinx的quick boot(1) ——flash的一些内容

    xilinx的quick boot(1) --flash,quick boot配置文件,以及中间的一些联系xilinx 配置模式分为SPI,BPI.用过的spi外挂flash是N25Q./////// ...

  3. 关于hbase中的hbase-site.xml 配置详解

    该文档是用Hbase默认配置文件生成的,文件源是 hbase-default.xml hbase.rootdir 这个目录是region server的共享目录,用来持久化HBase.URL需要是'完 ...

  4. Archlinux安装和使用技巧

    一 准备工作 1  文件下载及启动盘制作 文件可以在https://mirrors.ustc.edu.cn/,这是个中科大的镜像网,选择如下: 下载完成后,就是制作一个启动盘,我使用的是Linux下强 ...

  5. python的测试

    测试 知识点 单元测试概念 使用 unittest 模块 测试用例的编写 异常测试 测试覆盖率概念 使用 coverage 模块 实验步骤 1. 应该测试什么? 如果可能的话,代码库中的所有代码都要测 ...

  6. 多线程socket UDP收发数据

    多线程socket收发数据 from threading import Thread from socket import * def sendData(): while True: sendInfo ...

  7. 201421123042 《Java程序设计》第6周学习总结

    1. 本周学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图或相关笔记,对面向对象思想进行一个总结. 注1:关键词与内容不求多,但概念之间的联系要清晰 ...

  8. bootstrap的ajax提交

    一般后台界面都用bootstrap框架,这是一个css框架,里面封装了ajax方法,只需要在样式中指定就行,根本自己不用写 <td> <eq name='item.status' v ...

  9. php后台的在控制器中就可以实现阅读数增加

    $smodel=M('Sswz');$smodel->where($map)->setInc('view' ,1);php后台的在控制器中就可以实现阅读数增加前台不需要传值

  10. zTree根据json选中节点,并且设置其他节点不可选

    首先,在适配目录树时,使用checkbox形式,配置代码如下: var settingCatalog = { check:{ enable: true }, data:{ simpleData:{ e ...