`
wen866595
  • 浏览: 269024 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

shell 笔记 之测试选项、测试命令

阅读更多

简单的测试:

#!/bin/bash

echo 文件比较运符
echo 运算符        描述                         示例
echo -e filename   如果 filename存在,则为真    [ -e /var/log/syslog ]
echo -d filename   如果 filename为目录,则为真     [ -d /tmp/mydir ]
echo -f filename   如果 filename为常规文件,则为真     [ -f /usr/bin/grep ]
echo -L filename   如果 filename为符号链接,则为真     [ -L /usr/bin/grep ]
echo -r filename   如果 filename可读,则为真   [ -r /var/log/syslog ]
echo -w filename   如果 filename可写,则为真   [ -w /var/mytmp.txt ]
echo -x filename   如果 filename可执行,则为真     [ -L /usr/bin/grep ]
echo filename1-nt filename2    如果 filename1比 filename2新,则为真    [ /tmp/install/etc/services -nt /etc/services ]

echo filename1-ot filename2    如果 filename1比 filename2旧,则为真    [ /boot/bzImage -ot arch/i386/boot/bzImage ]


echo 字符串比较运算符
echo -z string     如果 string长度为零,则为真     [ -z "$myvar" ]
echo -n string     如果 string长度非零,则为真     [ -n "$myvar" ]
echo string1= string2    如果 string1与 string2相同,则为真  [ "$myvar" = "one two three" ]
echo string1!= string2     如果 string1与 string2不同,则为真  [ "$myvar" != "one two three" ]


echo 算术比较运算符
echo num1-eq num2  等于    [ 3 -eq $mynum ]
echo num1-ne num2  不等于  [ 3 -ne $mynum ]
echo num1-lt num2  小于    [ 3 -lt $mynum ]
echo num1-le num2  小于或等于  [ 3 -le $mynum ]
echo num1-gt num2  大于    [ 3 -gt $mynum ]
echo num1-ge num2  大于或等于  [ 3 -ge $mynum ]

 

用test命令、[[  ]] 进行更复杂的测试:

#!/bin/bash


# test expr 和 [ expr ] 是等价的;可以用$?检查返回值;可以使用&&和||操作返回值
test 3 -gt 4 && echo true || echo false


# 可以使用-eq, -ne, -lt, -le, -gt, -ge 比较算术值。

# 可以使用操作符=, !=, <, > 比较字符串是否相等,不相等或者第一个字符串的排序在第二个字符串的前面或后面。
# 单目操作符-z 测试null字符串;
# 由于shell也用< >操作符进行重定向,所以必须使用\< \> 加以转义。

[ "abc" != "def" ];echo $?

[ "abc" \< "ab" ];echo $?

[ "abc" \> "abcd" ];echo $?

# -a和-o选项允许使用逻辑运算符AND和OR将表达式组合在一起。单目操作符!是逻辑非。
# shell通常要在子shell中运行括号中的表达式,所以需要用\( \)转义括号,或者把这些操作符括在单引号或双引号内。
# 
test "a" = "a" -a 3 -lt 4 ; echo $?
test "a" != "b" -a 3 -ge 4 ; echo $?

[ ! \( "a" = "a" -o 3 -lt 4 \) ]; echo $?
[ ! \( "a" = "a" -o 3 -lt 4 ")" ]; echo $?


# (( 和 [[
# (( expr )) 复合命令计算算术表达式,如果表达式求值为0,则设置推出状态为1;
# 如果求值为非0,则设置为0.
# 不需要对(( )) 之间的操作符转义。可执行C语言中常见的算术、逻辑和位操作。
# 算术只对整数进行。
let x=2 y=2**3 z=y*3
echo $x  $y  $z

(( w=y/x + ( (~ ++x) & 0xf) )); echo $? $x $y $w
# (( w=y/x + ( (~ ++x) & 0xf ) )); echo $? $x $y $w


# [[ ]] 可以对文件名和字符串使用更自然的语法。
[[ (-d "`pwd`") && (-w "`pwd`") ]] && echo "`pwd` is writable directory"

# 在使用= 或 != 操作符时,符合命令[[ 还能在字符串上进行模式匹配。
[[ "abc def .d,x--" = a[abc]*\ ?d* ]]; echo pattern match $?
[[ "abc def c--" = a[abc]*\ ?d ]]; echo pattern match $?
[[ "abc def d,x" = a[abc]*\ d* ]]; echo pattern match $?
 

 

2
4
分享到:
评论

相关推荐

    Shell脚本学习笔记

    3.5.1 使用多条测试命令 71 3.5.2 until命令与循环嵌套 72 3.6 文件数据的循环与控制循环 73 3.6.1 文件数据的循环 73 3.6.2 break命令 73 3.6.3 continue命令 75 第4章 处理用户输入与显示数据 76 4.1 命令行参数与...

    Linux命令大全笔记

    - **描述**: `tar`命令是Linux系统中最常用的打包工具之一,可以用来创建或解包tar格式的文件,并且还可以与gzip、bzip2等压缩工具结合使用进行压缩。 #### 二、文件与目录管理 **1. ls** - **命令格式**: `ls ...

    LINUX学习笔记,包括各种命令用法,认识SHELL,帐号管理等等...

    Shell是Linux的命令解释器,它接收用户的输入并执行相应的命令。常见的Shell有Bash(Bourne-Again SHell)、Sh、Csh和Zsh等。Bash是默认的Shell,具有丰富的功能和可扩展性。学习Shell脚本编程可以提高工作效率,...

    Unix中的shell程序编写笔记

    这篇“Unix中的shell程序编写笔记”将深入探讨如何利用Shell编写高效、自动化的脚本。 一、Shell的基本概念 1. Shell类型:Unix中有多种Shell,如Bash(Bourne-Again SHell)、C Shell、Korn Shell和Z Shell等,...

    efi shell常用工具

    1. **EFI Shell二进制**:这是实际的Shell程序,如`shell.x64`,用于提供命令行界面,支持各种内置命令,如`cd`(改变目录)、`ls`(列出目录内容)和`copy`(复制文件)等。 2. **EFI工具**:这些是与EFI Shell...

    shell自研基础学习笔记

    Z shell:标识为zsh,是功能最丰富的shell之一,提供了许多扩展和自定义选项。 二、变量与引用 在shell中,变量用于存储数据。变量命名遵循特定规则,通常由字母、数字和下划线组成,且不能以数字开头。变量类型...

    Shell脚本学习指南笔记.pdf

    开发便捷是指在Shell中,你可以快速测试命令,然后将其整合进脚本,减少了调试和试验的时间。 在Shell脚本中,命令和参数是其核心元素。命令行上的每个部分由空格分隔,而选项通常跟在命令名后面。分号`;`或`&`用于...

    Linux服务器Shell编程学习笔记linux操作系统 电脑资料.docx

    在这个学习笔记中,我们将深入探讨如何编写和理解Shell脚本。 首先,Shell是Linux操作系统中的一个用户界面,它作为用户与操作系统内核交互的接口。常见的Shell类型有bash(Bourne-Again SHell)、sh(Bourne Shell...

    总结搜集的shell脚本学习笔记(完结篇).pdf

    为了更有效地调试Shell脚本,可以使用`set -x`选项打开命令跟踪,以便查看执行过程中的每一步。示例: ```bash #!/bin/bash set -x echo "Debugging mode on" ``` #### 十六、编程小结 Shell脚本编程涵盖了从基本...

    linux笔记笔记笔记笔记

    编写良好的Makefile可以大大提高开发效率,通过make命令即可实现快速构建和测试。 3. **Shell脚本**:Shell脚本是Linux系统中的批处理程序,使用Bash或其他Shell解释器执行。编写Shell脚本可以自动化日常任务,提高...

    网易云课程“Linux 入门基础”课程学习笔记

    - **定义**:Shell是操作系统的外壳程序,负责接收用户命令并将之转换为系统可以理解的指令。它可以分为CLI(Command Line Interface,命令行界面)和GUI(Graphical User Interface,图形用户界面)两种类型。 - **...

    Linux服务器Shell编程学习笔记linux操作系统 电脑资料.pdf

    Linux服务器Shell编程是系统管理员和开发者在日常工作中必备的技能之一。Shell脚本是一种通过Shell解释器执行的文本文件,可以包含一系列命令,用于自动化任务和管理系统。在Linux操作系统中,常用的Shell包括bash、...

    cobalt strike笔记-常用beacon命令.pdf

    Beacon payload 在渗透测试中起着至关重要的作用,它不仅提供了一种持久化控制目标主机的方法,而且其灵活多变的通信方式和多种配置选项为攻击者提供了强大的攻击能力。安全专家在使用 Cobalt Strike 进行测试时,应...

    linux运维学习笔记:Shell生成随机数的方法.pdf

    在Linux运维过程中,掌握Shell脚本的编写技巧是非常重要的,其中生成随机数是常见的需求,例如在自动化测试、密码生成或者模拟随机数据等场景。本文将详细介绍几种在Shell中生成随机数的方法。 首先,最简单的方法...

    Linux命令笔记

    3:ping 测试网络连通性 语法:ping 选项IP地址 4:ifconfig 查看和设置网卡信息 语法:ifconfig [网卡名称] [IP地址] 5:mail 查看发送电子邮件 语法:mail [用户名] 6:last 列出目前与过去登陆系统的用户信息 语法:...

    linux服务器命令用法笔记

    本篇笔记主要针对Linux服务器中的常用命令及用法进行了详尽的总结,旨在帮助初学者快速上手,并为有一定经验的用户提供参考。 1. **基础命令** - `ls`:列出目录内容,通过`-l`选项可显示详细信息。 - `cd`:切换...

    shell脚本学习资料

    1. **错误处理**:如何优雅地处理脚本运行中的错误,使用set命令设定shell选项。 2. **调试技巧**:如何使用set -x、set -v等选项进行脚本的调试。 3. **脚本最佳实践**:如何编写清晰、可读性强的脚本,遵循一定的...

    linux与unix shell编程指南

    通过阅读这本书和相关的读书笔记,读者不仅可以学习到基本的shell编程知识,还能深入理解Linux和Unix系统的工作原理,从而更好地管理和自动化日常工作。这本书对于系统管理员、开发者以及所有希望提高Linux终端技能...

    sqlmap使用笔记1

    - `--os-cmd`执行操作系统命令,`--os-shell`提供一个与目标系统的交互式shell,`--os-pwn`则可以反弹shell。 - `--file-read`、`--file-write`和`--file-dest`分别用于读取、写入远程文件,`--msf-path`指定...

    SQLMAP使用笔记.pdf

    其中,`-u` 选项指定了要测试的 URL,`[options]` 是可选的参数和选项。 二、常用参数 1. `-f`:指定指纹判别数据库类型 2. `-b`:获取数据库版本信息 3. `-p`:指定可测试的参数 4. `-D`:指定数据库名 5. `-T`:...

Global site tag (gtag.js) - Google Analytics