北京SEO

linux中shell下test [ ] 条件表达式使用详解

2019/10/10/17:46:31  阅读:1927  来源:谷歌SEO算法  标签: SEO知识

shell是一个非常强在的编码环境了,我们可以使用shell编程来做很多的事情了,下面我们来学习shell条件表达式使用方法.

test 条件表达式说明,文件符号:

  1. [root@LAMPtest]#helptest
  2. test:test[expr]
  3. Evaluateconditionalexpression.
  4. Exitswithastatusof0(true)or1(false)dependingon
  5. theevaluationofEXPR.Expressionsmaybeunaryorbinary.Unary
  6. expressionsareoftenusedtoexaminethestatusofafile.There
  7. arestringoperatorsaswell,andnumericcomparisonoperators.
  8. Fileoperators:
  9. -aFILETrueiffileexists.
  10. -bFILETrueiffileisblockspecial.
  11. -cFILETrueiffileischaracterspecial.
  12. -dFILETrueiffileisadirectory.
  13. -eFILETrueiffileexists.
  14. -fFILETrueiffileexistsandisaregularfile.
  15. -gFILETrueiffileisset-group-id.
  16. -hFILETrueiffileisasymboliclink.
  17. -LFILETrueiffileisasymboliclink.
  18. -kFILETrueiffilehasits`sticky'bitset.
  19. -pFILETrueiffileisanamedpipe.
  20. -rFILETrueiffileisreadablebyyou.
  21. -sFILETrueiffileexistsandisnotempty.
  22. -SFILETrueiffileisasocket.
  23. -tFDTrueifFDisopenedonaterminal.
  24. -uFILETrueifthefileisset-user-id.
  25. -wFILETrueifthefileiswritablebyyou.
  26. -xFILETrueifthefileisexecutablebyyou.
  27. -OFILETrueifthefileiseffectivelyownedbyyou.
  28. -GFILETrueifthefileiseffectivelyownedbyyourgroup.
  29. -NFILETrueifthefilehasbeenmodifiedsinceitwaslastread.
  30. FILE1-ntFILE2Trueiffile1isnewerthanfile2(accordingto
  31. modificationdate).
  32. FILE1-otFILE2Trueiffile1isolderthanfile2.
  33. FILE1-efFILE2Trueiffile1isahardlinktofile2.
  34. Stringoperators:
  35. -zSTRINGTrueifstringisempty.
  36. -nSTRING
  37. STRINGTrueifstringisnotempty.
  38. STRING1=STRING2
  39. Trueifthestringsareequal.
  40. STRING1!=STRING2
  41. Trueifthestringsarenotequal.
  42. STRING1<STRING2
  43. TrueifSTRING1sortsbeforeSTRING2lexicographically.
  44. STRING1>STRING2
  45. TrueifSTRING1sortsafterSTRING2lexicographically.
  46. Otheroperators:
  47. -oOPTIONTrueiftheshelloptionOPTIONisenabled.
  48. !EXPRTrueifexprisfalse.
  49. EXPR1-aEXPR2Trueifbothexpr1ANDexpr2aretrue.
  50. EXPR1-oEXPR2Trueifeitherexpr1ORexpr2istrue.
  51. arg1OParg2Arithmetictests.OPisoneof-eq,-ne,
  52. -lt,-le,-gt,or-ge.
  53. ArithmeticbinaryoperatorsreturntrueifARG1isequal,not-equal,
  54. less-than,less-than-or-equal,greater-than,orgreater-than-or-equal--phpfensi.com
  55. thanARG2.
  56. ExitStatus:
  57. ReturnssuccessifEXPRevaluatestotrue;failsifEXPRevaluatesto
  58. falseoraninvalidargumentisgiven.

-a file如果 file 存在则为真.

-b file 如果 file 存在且为块设备则为真。

-c file 如果 file 存在且为字符设备则为真。

-d file 如果 file 存在且是一个目录则为真。

-e file 如果 file 存在则为真。

-f file 如果 file 存在且为普通文件则为真。

-g file 如果 file 存在且是设置组ID的 (sgid) 则为真。

-h file 如果 file 存在且为符号链接则为真。

-k file 如果 file 存在且设置了 ‘‘sticky’’ 位 (粘滞位) 则为真。

-p file 如果 file 存在且是一个命名管道 (FIFO) 则为真。

-r file 如果 file 存在且可读则为真。

-s file 如果 file 存在且大小大于零则为真。

-t fd 如果文件描述符 fd 是打开的且对应一个终端则为真。

-u file 如果 file 存在且是设置用户ID的 (suid) 则为真。

-w file 如果 file 存在且可写则为真。

-x file 如果 file 存在且可执行则为真。

-O file 如果 file 存在且为有效用户ID所拥有则为真。

-G file 如果 file 存在且为有效组ID所拥有则为真。

-L file 如果 file 存在且为符号链接则为真。

-S file 如果 file 存在且为套接字则为真。

-N file 如果 file 存在且上次读取后被修改过则为真。

file1 -nt file2 如果 file1 比 file2 要新(根据修改日期),或者如果 file1 存在而 file2 不存在,则为真.

file1 -ot file2 如果 file1 比 file2 更旧,或者如果 file1 不存在而 file2 存在,则为真。

file1 -ef file2 如果 file1 和 file2 指的是相同的设备和 inode 号则为真。

-o optname 如果启用了 shell 选项 optname 则为真。参见下面对内建命令 set 的 -o 选项的描述中的选项列表。

-z string 如果 string 的长度为 0 则为真。

-n string string 如果 string 的长度非 0 则为真。

string1 == string2 如果字符串相等则为真。= 可以用于使用 == 的场合来兼容 POSIX 规范。

string1 != string2 如果字符串不相等则为真。

string1 < string2 如果 string1 在当前语言环境的字典顺序中排在 string2 之前则为真。

string1 > string2 如果 string1 在当前语言环境的字典顺序中排在 string2 之后则为真。

arg1 OP arg2 OP 是-eq,-ne,-lt,-le,-gt,或 -ge 之一,这些算术二进制操作返回真,如果 arg1 与 arg2 分别是相等,不等,小于,小于或等于,大于,大于或等于关系,Arg1 和 arg2 可以是正/负整数。

shell 条件表达式[ ]说明:

equal:在[]中使用-eq、在(())[[]]中使用==;

not-equal:在[]中使用-ne、在(())[[]]中使用!=;

less-than:在[]中使用-lt、在(())[[]]中使用<;

less-than-or-equal:在[]中使用-le、在(())[[]]中使用<=;

greater-than:在[]中使用-gt、在(())[[]]中使用>;

greater-than-or-equal:在[]中使用-ge、在(())[[]]中使用>=;

逻辑操作符:

and:在[]中使用-a、在(())[[]]中使用&&;

or:在[]中使用-o、在(())[[]]中使用||;

!:在[]中使用!、在(())[[]]中使用!;

试验:=、!=测试

  1. [root@LAMPscript]#[2==2]&&echoright||echowrong#如果2=2,则打印right,否则wrong
  2. right
  3. [root@LAMPscript]#[2!=2]&&echoright||echowrong#如果2≠2,则打印right,否则wrong
  4. wrong
  5. [root@LAMPscript]#[2==3]&&echoright||echowrong#如果2=3,则打印right,否则wrong
  6. wrong
  7. [root@LAMPscript]#[2-eq2]&&echoright||echowrong
  8. right
  9. [root@LAMPscript]#[2-ne2]&&echoright||echowrong
  10. wrong
  11. [root@LAMPscript]#[2-eq3]&&echoright||echowrong
  12. wrong
  13. [root@LAMPscript]#[[2==2]]&&echoright||echowrong
  14. right
  15. [root@LAMPscript]#[[2!=2]]&&echoright||echowrong
  16. wrong
  17. [root@LAMPscript]#[[2==3]]&&echoright||echowrong
  18. wrong
  19. 试验:<、>测试
  20. [root@LAMPscript]#[2-lt3]&&echoright||echowrong
  21. right
  22. [root@LAMPscript]#[2-gt3]&&echoright||echowrong
  23. wrong
  24. [root@LAMPscript]#[[2<3]]&&echoright||echowrong
  25. right
  26. [root@LAMPscript]#[[2>3]]&&echoright||echowrong
  27. wrong
  28. ########################特殊备注########################
  29. [root@LAMPscript]#[2<3]&&echoright||echowrong
  30. right
  31. [root@LAMPscript]#[2>3]&&echoright||echowrong
  32. right
  33. [root@LAMPscript]#[2\<3]&&echoright||echowrong
  34. right
  35. [root@LAMPscript]#[2\>3]&&echoright||echowrong
  36. wrong
  37. ########################特殊备注########################
  38. 试验:<=、>=测试
  39. [root@LAMPscript]#[2-le3]&&echoright||echowrong
  40. right
  41. [root@LAMPscript]#[2-ge3]&&echoright||echowrong
  42. wrong
  43. [root@LAMPscript]#[[2-le3]]&&echoright||echowrong
  44. right
  45. [root@LAMPscript]#[[2-ge3]]&&echoright||echowrong
  46. wrong
  47. [root@LAMPscript]#[2<=3]&&echoright||echowrong
  48. -bash:[:2:unaryoperatorexpected
  49. wrong
  50. [root@LAMPscript]#[2>=3]&&echoright||echowrong
  51. -bash:[:2:unaryoperatorexpected
  52. wrong
  53. [root@LAMPscript]#[[2\<=3]]&&echoright||echowrong
  54. -bash:conditionalbinaryoperatorexpected
  55. -bash:syntaxerrornear`\<='
  56. [root@LAMPscript]#[[2<=3]]&&echoright||echowrong
  57. -bash:syntaxerrorinconditionalexpression
  58. -bash:syntaxerrornear`3'
  59. [root@LAMPscript]#[[2>=3]]&&echoright||echowrong
  60. -bash:syntaxerrorinconditionalexpression
  61. -bash:syntaxerrornear`3'

广告内容

linux中shell下test [ ] 条件表达式使用详解 linux中shell下test [ ] 条件表达式使用详解 linux中shell下test [ ] 条件表达式使用详解

相关阅读

热门评论

互联网十八般武艺 互联网十八般武艺

互联网十八般武艺

总篇数179

精选文章

RMAN中catalog和nocatalog区别介绍 小技巧:为Linux下的文件分配多个权限 zimbra8.5.1安装第三方签名ssl证书的步骤 解决mysql不能远程连接数据库方法 windows服务器mysql增量备份批处理数据库 mysql中slow query log慢日志查询分析 JavaScript跨域问题总结 Linux下负载均衡软件LVS配置(VS/DR)教程 mysql中权限参数说明 MYSQL(错误1053)无法正常启动

SEO最新算法