【参考文章】:shell if [[ ]]和[ ]区别 || &&

【参考文章】:Shell test 命令

1. [ ] 和 test

  test  等同于 [ ]

  可用于判断某个条件是否为真。可用于 字符串,数值和文件的测试。

1.1 字符串

  可使用的参数如下:

  也可以使用 ==(等价于=)

  示例:

read -p "str1:" str1
read -p "str2:" str2
# [ 后面和 ] 前面必须使用空格隔开
# = 两端必须使用空格隔开
if [ "$str1" = "$str2" ]
then
echo "str1 == str2"
else
echo "str1 != str2"
fi

1.2 数值

  示例:

 read -p "num1:" num1
read -p "num2:" num2
# [ 后面和 ] 前面必须使用空格隔开
# = 两端必须使用空格隔开
if [ "$num1" -eq "$num2" ]
then
echo "num1 == num2"
else
echo "num1 != num2"
fi if [ "$num1" -gt "$num2" ]
then
echo "num1 > num2"
else
echo "num1 <= num2"
fi

3. 文件

  示例:

 read -p "输入文件路径:" filepath

 if [ -e $filepath ]
then
echo "文件存在"
else
echo "文件不存在"
fi

2. [[ ]]

  [[ ]] 比 [ ] 更强大

  使用 =~ 操作符时, 支持 shell 的正则表达式

 read -p "str1:" str1

 str2=a{}

# [ 后面和 ] 前面必须使用空格隔开
# = 两端必须使用空格隔开
if [[ ${str1} =~ ${str2} ]]
then
echo "str1 == str2"
else
echo "str1 != str2"
fi

shell [ ] 和 [[ ]] 区别的更多相关文章

  1. 交互式shell和非交互式shell、登录shell和非登录shell的区别

    交互式shell和非交互式shell.登录shell和非登录shell的区别.首先,这是两个不同的维度来划分的,一个是是否交互式,另一个是是否登录. 交互式shell和非交互式shell(intera ...

  2. maya shell 和 UV shell 的区别

    maya shell 和 UV shell 的区别 shell 是 maya 模型自身分离的部分 UV shell 是 UV 分离的部分 有多少个shell,就至少有多少个 UV shell,但是一个 ...

  3. sh/bash/csh/Tcsh/ksh/pdksh等shell本质区别

    sh/bash/csh/Tcsh/ksh/pdksh等shell本质区别 1. Shell脚本的书写 在写Shell脚本时,往往第一行要注明用什么解释器来解释这个脚本. 如#!/bin/bash即用/ ...

  4. Shell: sh,bash,csh,tcsh等shell的区别(转)

    转载自:http://zhidao.baidu.com/question/493376840.html, http://blog.sina.com.cn/s/blog_71261a2d0100wmbj ...

  5. sh/bash/csh/Tcsh/ksh/pdksh等shell的区别

    w shell confusion..what is diff between bash, ksh, csh, tcsh..??  http://www.linuxquestions.org/ques ...

  6. login shell 和 non-login shell 的区别

    介绍之前先思考一个问题:有时我们通过su命令切换用户后,却发现并没有进入该用户的shell环境.这是为什么? login shell:取得bash时需要完整的登录流程.就是说通过输入账号和密码登录系统 ...

  7. Makefile与shell脚本区别

    http://blog.chinaunix.net/uid-20672257-id-3345593.html 在Makefile可以调用shell脚本,但是Makefile和shell脚本是不同的.本 ...

  8. login shell 和 non-login shell 的区别

              login shell:去的bash时需要完整的登录流程.就是说通过输入账号和密码登录系统,此时取得的shell称为login shell non-login shell:取得sb ...

  9. git、git bash、git shell的区别

    之前安装了github(CSDN上找的,官网的下不来,貌似要FQ - -)后,自带了git shell,如图: 输命令的时候发现网上的一些命令不管用,譬如:git ls –a 查看隐藏的 .git 文 ...

随机推荐

  1. lua堆栈

    lua堆栈 来源 https://blog.csdn.net/suhuaiqiang_janlay/article/details/56702381 来源 https://blog.csdn.net/ ...

  2. celery最佳体验

    目录 目录 不使用数据库作为 Broker 不要过分关注任务结果 实现优先级任务 应用 Worker 并发池的动态扩展 应用任务预取数 保持任务的幂等性 应用任务超时限制 善用任务工作流 合理应用 a ...

  3. 【Git】一、安装、配置和仓库创建

    之前一直使用图形界面的git,只会一些最常用的操作,并没有说深入学习git的全部功能 开发这么久了,觉得是时候学习一下指令操作,更快捷也更bigger ------------------------ ...

  4. vue-element-admin 之设置侧边栏的icon

    一.将icon的svg文件放置如下图文件位置 二.在路由设置中设置(icon设置为svg的文件名称即可)          注:若icon选中的颜色不会随着侧边栏文字颜色变动,把svg文件中的fill ...

  5. ARM体系结构与编程读书笔记——处理器的寄存器

    ARM处理器共有37个寄存器,其中包括: 31个通用寄存器,包括程序计数器(PC)在内,寄存器都是32位: 6个状态寄存器,这些寄存器都是32位的,目前只使用了其中12位: 通用寄存器 可以分为下面3 ...

  6. git diff 检查更新

    git diff 检查更新 git fetch #需要先 fetch git diff master..origin/master --name-only -- [path] #path:指定检查 可 ...

  7. Jenkins构建从github上克隆时,报Host key verification failed.

    首先在本地通过CMD执行git clone xxxxx时,可以成功的通过免密(SSH_KEY)克隆下来代码,但是通过Jenkins克隆时,就报如下信息: Cloning into 'GitHub'.. ...

  8. UOJ117 欧拉回路[欧拉回路]

    找欧拉回路的模板题. 知识点详见图连通性学习笔记. 注意一些写法上的问题. line37&line61:因为引用,所以j和head值是同步更新的,类似于网络流的当前弧优化,除了优化枚举外,这样 ...

  9. CF776D The Door Problem[2-SAT]

    翻译 对于一扇门,如果是关的,那么他必须使用其中一个开关开开来,如果是开的,要么使用两个开关,要么啥都不做.这样,每扇门恰好对应两种状态,要选一个. 考虑用2-SAT模型解决.连边的话是对于一个机关, ...

  10. GPU driven pipeline in metal

    https://developer.apple.com/documentation/metal/dynamic_terrain_with_argument_buffers?language=objc ...