`
wen866595
  • 浏览: 264553 次
  • 性别: 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命令shell命令shell命令

    shell命令shell命令shell命令shell命令shell命令shell命令shell命令shell命令shell命令shell命令shell命令shell命令shell命令shell命令

    shell编程个人笔记

    shell编程个人笔记shell编程个人笔记shell编程个人笔记shell编程个人笔记shell编程个人笔记shell编程个人笔记shell编程个人笔记shell编程个人笔记shell编程个人笔记shell编程个人笔记shell编程个人笔记shell编程个人...

    linux shell 笔记 (未整理)

    linux shell 笔记 没有整理!

    Shell学习笔记

    Shell学习笔记Shell学习笔记Shell学习笔记Shell学习笔记Shell学习笔记Shell学习笔记

    shell 笔记

    详细记录shell学习笔记,例子、解析等都有分析和记录!

    SHELL命令笔记汇总

    SHELL命令笔记汇总,本人自己学习Linux的一些个人笔记和心得,便于常规指令快速记忆和使用。全面的还是以书籍为主。。

    Shell脚本学习笔记

    第1章 BashShell命令 6 1.1 Shell提示符 6 1.2 文件与目录Shell命令 7 1.2.1 更改目录命令(cd) 7 1.2.2 列表命令(ls) 7 1.2.3 操作文件命令 10 1.2.4 目录处理命令 14 1.2.5 查看文件内容命令 15 1.3 监控程序 20 ...

    linux脚本shell学习笔记

    shell学习基本命令,可以帮助初学者快速掌握较全面的shell脚本知识

    shell学习笔记(常用shell命令介绍和用例)

    shell命令的学习笔记。 包含常用的shell命令说明和使用用例。 可快速入门,也可当手册使用。

    linux shell命令学习笔记

    linux shell命令学习笔记

    LINUX SHELL命令练习题

    LINUX SHELL命令练习 题

    COM ATL ShellExtension编程之选项卡标签页.zip

    COM ATL ShellExtension编程之选项卡标签页.zip

    shell命令常用shell命令

    Shell 既是一种命令语言,又是一种程序设计语言。 Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。 Ken Thompson 的 sh 是第一种 Unix Shell,Windows Explorer 是...

    091-从无回显命令执行到getshell的渗透测试.pdf

    091-从无回显命令执行到getshell的渗透测试.pdf

    Linux测试带宽(shell),测试流量

    5.使用后台运行命令执行:nohup ./bandwidth.sh (注:停止脚本 pkill -9 bandwidth.sh && pkill -9 wget) 6.查看结果:BandwitdthResult.txt //********************************************************* 测试...

    Linux教程+ shell学习笔记 + Shell脚本常用命令+shell脚本100例资源合集

    本文整理了一份Linux shell学习笔记及基本命令合集,包含了LINUX常用操作命令和命令行编辑快捷键、shell基本命令,Linux相关使用配置教程等,需要的朋友可下载试试! shell是一个用C语言编写的程序,它是用户使用...

    常用shell命令常用shell命令

    常用shell命令常用shell命令常用shell命令常用shell命令常用shell命令

    Linux shell命令详解

    简单的说shell程序就是一个包含若干行shell或者linux命令的文件,象编写高级语言的程序一样,编写一个shell程序需要一个文本编辑器.如Ⅵ等.在文本编辑环境下,依据shell的语法规则,输入一些shell/linux命令行,形成...

    shell编程学习笔记

    $-:显示shell使用的当前选项,与set命令功能相同;$?:显示最后命令的退出状态(0表示没有错误,其他任何值表明有错误。)。 变量的规则 1.变量与变量内容以一个等号『=』来连结,如下所示『myname=...

Global site tag (gtag.js) - Google Analytics