网站地图    收藏   

主页 > 系统 > linux系统 >

shell笔记之测试选项、测试命令 - Linux操作系统:

来源:自学PHP网    时间:2015-04-14 11:51 作者: 阅读:

[导读] shell笔记之测试选项、测试命令简单的测试:Shell代码 #!/bin/bash www.2cto.com echo 文件比较运符 echo 运算符 描述 示例 echo -e filename 如果 filename存在,......


shell笔记之测试选项、测试命令
 
简单的测试:
Shell代码  
#!/bin/bash  
www.2cto.com  
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命令、[[  ]] 进行更复杂的测试:
Shell代码  
#!/bin/bash  
www.2cto.com  
# 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 $?  
    www.2cto.com  
# -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 $?  

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论