说明:

1. 把字符串当成整型进行比较,由于abcd等字符对不上0123当程序尝试去转成二进制时无法完成转换,所以用于数值比较的运算不能用于字符串比较;但是把整型当成字符串进行比较,0123这些数值完全可以转成ASCII码而且原本两个整型相等则变成ASCII码还是相等、不等的还是不等,所以可用于字符串的比较也可用于整型的比较。

2. if语句中,数值比较的写法是if [ $var1 -ge $var2 ];字符串比较的写法是if [ “$var1” != “$var2” ],其中加双引号只是兼容$var2处为空的情况

3. 在各种运算中,test命令的运算和中括号是等效的

4. 赋值时等号两边没空格,比较或测试时运算符两边都要有空格

5. shell默认是字符运算,如果想当数值进行运算要在前边加上expr,如:var3=`expr $var1 + $var2`

6. shell的文件包含命令只有“.”,而且该命令只能一次包含单个文件(当然可以用*表示文件夹下所有文件)而不能包含一个文件夹;所见的!includedir和#includedir并不存在这样的命令,应该是程序自己实现的包含功能

7. “.”在shell中执行则会影响shell的环境,但如果只在脚本中执行那只影响脚本中的环境不会影响当前shell的环境;source其实也如此。

1.只适用于数值的比较

该类型操作会把两边变量当成整型进行加减运算,字符串abcd按整型运算无法进行,所以此类型不能用于字符串比较

参数 说明
-eq 等于则为真
-ne 不等于则为真
-gt 大于则为真
-ge 大于等于则为真
-lt 小于则为真
-le 小于等于则为真

2.适用于字符串的比较(也可用于数值比较)

参数 说明
== 相等则为真
!= 不相等则为真

3.字符串测试运算

参数 说明
-z 字符串 字符串的长度为零则为真
-n 字符串 字符串的长度不为零则为真

4.文件测试运算

参数 说明
-e 文件名 如果文件存在则为真
-r 文件名 如果文件存在且可读则为真
-w 文件名 如果文件存在且可写则为真
-x 文件名 如果文件存在且可执行则为真
-s 文件名 如果文件存在且至少有一个字符则为真
-d 文件名 如果文件存在且为目录则为真
-f 文件名 如果文件存在且为普通文件则为真
-c 文件名 如果文件存在且为字符型特殊文件则为真
-b 文件名 如果文件存在且为块特殊文件则为真

参考:

http://www.runoob.com/linux/linux-shell-test.html

Linux Shell数值比较和字符串比较及相关的更多相关文章

  1. linux shell数值比较和字符串比较

    说明: 1. 把字符串当成整型进行比较,由于abcd等字符对不上0123当程序尝试去转成二进制时无法完成转换,所以用于数值比较的运算不能用于字符串比较:但是把整型当成字符串进行比较,0123这些数值完 ...

  2. 学习Linux shell脚本中连接字符串的方法

    这篇文章主要介绍了Linux shell脚本中连接字符串的方法,如果想要在变量后面添加一个字符,可以用一下方法: 代码如下: $value1=home $value2=${value1}"= ...

  3. Linux Shell 高级变量及字符串

    高级变量包含三个部分1.变量扩展2.命令替换3.算术扩展在Bash Shell中,$算符会触发到上述三种扩展,基本形式如下:    基本型             扩展种类            例子 ...

  4. shell 数值比较和字符串比较

    1. 数值比较 -eq        是否相等(equal) -gt         是否大于(greater than) -ge       是否大于等于(greater and equal tha ...

  5. Linux shell用sed批量更改文件名的相关内容

    示例 去除特定字符 目标:将指定目录下文件名中sprint替换为dev 方法: [root@Skip-ftp test]# for i in `ls` > do > name=`echo ...

  6. Linux shell利用sed如何批量更改文件名详解[转载]

     需求背景: 目录A用来存放自动化的包生成的apk文件,现在开发修改了包名的 命名规则:环境名称(pro|uat)-release-日期-v版本号.apk 原来的是思路是通过正则表达式匹配新的包名,但 ...

  7. Linux - Shell - shell 执行方式

    概述 shell 的执行方式 背景 偶尔执行个 shell 脚本 一般都用 './script' 执行 最近忽然看到 有不同的执行方式, 感觉有必要整理一下, 然后和大家分享 准备 os centos ...

  8. Linux编程 24 shell编程(结构化 if [ condition ] 数值比较,字符串比较)

    一.概述 接着上篇讲的结构化命令,最后讲到了test命令的另一种写法 if [ condition ],它的语法格式如下: --格式如下: if [ condition ] then commands ...

  9. Linux Shell 截取字符串

    Linux Shell 截取字符串 shell中截取字符串的方法很多 ${var#*/} ${var##*/} ${var%/*} ${var%%/*} ${var:start:len} ${var: ...

随机推荐

  1. win 10 安装visual studio 2010

    链接: https://pan.baidu.com/s/1JzA2Ei8NEGRPck253NUM9g 提取码: 52pt 点击下一步即可.

  2. python中的print()、str()和repr()的区别

    print()函数,我们可以看出,在Python IDLE中直接输入的字符串都是有类型的,而print打印后的字符串相当于一串文字,把字符串的引号也省略了,没有类型 print()函数,生成可读性更好 ...

  3. 安装tensorflow-gpu

    pip install --upgrade tensorflow-gpu import tensorflow as tf sess = tf.Session() 如果提示如下 -- ::] Your ...

  4. c代码,输出i,j,k互不相同的三位数

    #include <stdio.h> int main() { int i,j,k; printf("\n"); for(i=1;i<5;i++){ for(j= ...

  5. 学习笔记49—matlab FDR校正

    matlab自带函数mafdr,当ttest数较多时,可直接用[FDR, Q]=mafdr(P):但是Storey procedure在p值少于1000个时会崩溃,此时应改用BH FDR方法:mafd ...

  6. NGUI实现的一套不同大小 Item 的循环滚动代码

    测试: 数据 & Item  的 Ctrl : using UnityEngine; public class ScrollViewItemData { public int index; p ...

  7. 移动采编app

    大家好: 移动采编app用到了一些非该app定义的控件,比如照相机以及涉及到权限的弹窗等.这部分控件的元素id在不同品牌甚至同一品牌不同型号的手机上可能是不同的,因此安卓自动化中需要对这种情况做相应的 ...

  8. SQL SERVER 设置区别大小写

    表格中字段设置大小写: --查询时修改 select * from info where name collate Chinese_PRC_CS_AS_WS = 'lily'; --或者修改表对大小写 ...

  9. vs2015多行注释与取消多行注释

    注释: 先CTRL+K,然后CTRL+C 取消注释: 先CTRL+K,然后CTRL+U

  10. English Voice of <<Bye Bye Bye>>

    Bye Bye Bye - Lovestoned When i see you, looking back at me 当我看到你回首看我时 Watching this eye still 彼此凝视 ...