【参考文章】: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. empty和isset的区别

    1.empty 判断一个变量是否为空 null.false.0.0.0.’0′.array() .' '.var $a   都会返回true. 2.isset 判断一个变量是否设置 0.00.’0′. ...

  2. 使用 function 构造函数创建组件和使用 class 关键字创建组件

    使用 function 构造函数创建组件: 如果想要把组件放到页面中,可以把构造函数的名称,当作 组件的名称,以 HTML标签形式引入页面中, 因为在React中,构造函数就是一个最基本的组件. 注意 ...

  3. 解决chrome没有允许添加flash的问题

    有时候测试的时候,需要开启flash 但是Chrome一般都是自己弹出来的 现在弹不出来怎么办 自己添加? chrome://settings/content/flash 对不起  根本没有的 怎么解 ...

  4. ESP8266 UDP通信

    #include "driver/uart.h" #include "espconn.h" void ICACHE_FLASH_ATTR user_rf_pre ...

  5. [LeetCode] 40. Combination Sum II ☆☆☆(数组相加等于指定的数)

    https://leetcode.wang/leetCode-40-Combination-Sum-II.html 描述 Given a collection of candidate numbers ...

  6. Win7系统不能拖动文件夹的问题怎么解决?

    一般情况下,如果我们想要在电脑中移动文件夹,可以采用剪切复制粘贴或者按住鼠标左键拖动的方式来实现,但有些Win7系统用户反映文件夹会出现不能移动的情况,这是怎么回事呢?下面好系统U盘启动就为大家介绍一 ...

  7. django的几种缓存配置

    前言 首先说,为什么要用缓存的,由于Django是动态网站,所有每次请求均会去数据进行相应的操作,当程序访问量大时,耗时必然会更加明显,最简单解决方式是使用:缓存,缓存将一个某个views的返回值保存 ...

  8. DNSMASQ 部分选项 设置

    --local-service 仅接受地址位于本地子网上的主机(即服务器上存在接口的子网)的DNS查询.仅当没有--interface,-- except-interface,--listen-add ...

  9. 团队第二次作业:需求分析&系统设计

    所属课程 https://edu.cnblogs.com/campus/xnsy/Autumn2019SoftwareEngineeringFoundation/ 作业要求 https://edu.c ...

  10. set调用add报错:

    Map<String, String> goodsStandMap = new HashMap<>();goodsStandMap.put("key1", ...