`
huobengluantiao8
  • 浏览: 1040552 次
文章分类
社区版块
存档分类
最新评论

Shell里的测试条件

 
阅读更多
測試條件
在Bourne shell的內部命令裡面有測試條件的語法test給if while用
test condition
或者
[ condition ]

為了與autoconf不要混淆,programmer比較喜歡用test 不用中括號condition的方法。括號的用法請注意空格(这里容易出错哦)。 例如
檔案測試條件
test -f /etc/file 檔案是個一般檔案不是其他特殊檔案嗎
[ -e file ] 檔案存在嗎
[ -d /etc/ ] 目錄存在嗎
[ -s file ] 檔案大小大於0嗎
[ -r file ] 檔案可讀嗎
[ -b file ] 区块文件
[ -c file ] 字符文件
[ -f file ] 一般文件
[ -w file ] 文件可写吗
[ -x file ] 文件可执行吗
[ -k file ] 设定了限定位
[ -g file ] 设定了组位
[ -u file ] 设定了user id
[ -p file ] 管线

字串測試條件
[ "$string" ] string有東西就返回true
[ -n "$string" ] string有東西(non-zero)返回true
[ -z "$string" ] string沒東西(zero)返回true
[ "$s1" = "$s2" ] s1 等於 s2時返回true
[ "$s1" != "$s2" ] s1 不等於 s2時返回true

數值條件 小心有多個-喔
[ $num1 -eq $num2 ] num1相等 num2 為true
[ $num1 -ne $num2 ] 不等 num2 為true
[ $num1 -lt $num2 ] 小於 num2 為true
[ $num1 -ge $num2 ] 大於等於 num2 為true
[ $num1 -le $num2 ] 小于等于 num2 为true
[ $num1 -gt $num2 ] 小于 num2 为 true

多重條件
[ ! -f "testfile" -o ! -r "testfile" ]
[ test condition -o test condition ]
! 表示not
-a 表示and
-o 表示or

通常比較常用的又有portable的就是上面一些用法。 美觀上來說用中括號condition比較好看,很多人為了autoconf的語法portable起見, 盡量用test的寫法。測試的結果當然放在$?中,0表示成功, 其他值表示失敗。

在shell script中也有可能看到有人用
if [ "x$VAR" = "xvalue" ]; then .....

來作$VAR是否是空的測試,尤其你如果先測試是否為空字串, 再測試是那個值要做什麼,這樣就會作兩次測試划不來,用這樣作比較經濟。

另外這跟perl字串與數值測試容易混淆,他跟perl剛好相反,而且perl沒有多-
perl語法
if ($str1 eq $str2)
if ($num1 == $num2)

最後有個大比較,會一起列出shell perl c的差異來。(人老了記不住,我是這樣記 ,以perl為基準eq是字,所以前後是string,==是符號所以前後是number, bourne shell是怪胎,剛好顛倒,eq還要加個-符號。==要少一個=)
C語法
if (!strcmp(string1, string2))
if (num1 == num2)
分享到:
评论

相关推荐

    linux shell 条件测试

    linux shell 条件测试

    shell中条件测试.docx

    shell中条件测试.docx

    shell 基本知识,包括控制结构,条件测试,通配符,引号等

    shell 基本知识,包括控制结构,条件测试,通配符,引号等

    【shell脚本】shell脚本之条件判断if、for与while循环(shell脚本基础学习二)

    【shell脚本】shell脚本之条件判断if、for与while循环(shell脚本基础学习二) shell中的if 单分支 if 条件测试 ;then 命令序列 fi 双分支 if 条件测试 ;then 命令序列1 else 命令序列2 fi 多分支 if 条件测试 ;...

    Shell脚本的条件测试和if条件语句使用方法

    一、条件测试操作 要使Shell脚本程序具备一定的“智能”,面临的第一个问题就是如何区分不同的情况以确定执行何种操作。Shell环境根据命令执行后的返回状态值(¥?)来判断是否执行成功,当返回值为0时表示成功,...

    shell浅谈之二 运算符和if条件判断

    Shell各种判断结构和运算符的用法是shell编程的基础,了解shell的判断、运算符和一些退出状态对后面的学习有很重要的影响。shell有一个内部命令test经常用于对判断语句进行测试一种或几种状态的条件是否成立

    UNIX命令及SHELL编程

    17_基础shell编程-条件测试.PDF 18_基础shell编程-控制流结构.PDF 19_基础shell编程-shell 函数.PDF 20_基础shell编程-向脚本传递参数.PDF 21_基础shell编程-创建屏幕输出.PDF 22_基础shell编程-创建屏幕输入....

    shell 编程指南pdf

    18.7.5 带有测试条件的文件处理 190 18.7.6 扫描文件行来进行数目统计 191 18.7.7 每次读一对记录 193 18.7.8 忽略#字符 193 18.7.9 处理格式化报表 194 18.7.10 while循环和文件描述符 196 18.8 使用break和...

    Linux详细教程大全之shell脚本基础2-条件测试及控制流.docx

    Linux详细教程大全之shell脚本基础2-条件测试及控制流

    shell基础12篇电子书shellchoki.chm

    主要内容: shell基础 基本介绍,环境,选项,特殊字符 shell变量 用户定义变量,环境变量,位置变量(shell 参数) shell script编程 条件测试,循环及重复控制 .shell定制

    shell programming

    介绍:Bourne Shell 基础及其他很多有用的特性,shell编程及组织。 主要内容: .shell基础 基本介绍,环境,选项,特殊字符 .shell变量 用户定义变量,环境变量,位置变量...条件测试,循环及重复控制 .shell定制

    Shell自学pdf.zip

    第17 章条件测试.PDF 第18 章控制流结构.PDF 第19 章shell 函数.PDF 第20 章向脚本传递参数.PDF 第21 章创建屏幕输出.PDF 第22 章创建屏幕输入.PDF 第23 章调试脚本.PDF 第24 章shell 嵌入命令.PDF 第25 章深入讨论...

    Linux Shell编程3/3

    _grep家族 |_awk介绍 |_sed用法介绍 |_合并与分割 |_tr用法 第三部分登录环境 |_登录环境 |_环境和shell变量 |_引号 第四部分基础shell编程 |_shell脚本介绍 |_条件测试 |_控制...

    shell编程 linux

    017条件测试.pdf 018控制流结构.pdf 019shell 函数.pdf 020向脚本传递参数.pdf 021创建屏幕输出.pdf 022创建屏幕输入.pdf 023调试脚本.pdf 024shell嵌入命令.pdf 025深入讨论.pdf 026shell 工具.pdf 027...

    Linux常用命令和管理11-shell之条件测试及脚本实例21

    Bash条件测试之文件测试–a/E FILE:存在文件为真练习:存在文件显示文件行数,不存在显示不存在–d FILE:存在且为目录文件为真–f FILE:存在且

    绝版经典 LINUX与UNIX SHELL编程指南 PDF 高清版 [16.3M]

    第十七章 条件测试 第十八章 控制流结构 第十九章 SHELL函数 第二十章 向脚本传递参数 第二一章 创建屏幕输出 第二二章 创建屏幕输入 第二三章 调试脚本 第二四章 SHELL嵌入命令 第五部分 高级SHELL编程技巧...

    shell命令精品教程

    基础s h e l l编程 16、shell脚本介绍 17、条件测试 18、控制流结构 19、shell 函数 20、向脚本传递参数 21、创建屏幕输出 22、创建屏幕输入 23、调试脚本 24、...

    LINUX与UNIX SHELL编程指南(很全)

    18.7.5 带有测试条件的文件处理 190 18.7.6 扫描文件行来进行数目统计 191 18.7.7 每次读一对记录 193 18.7.8 忽略#字符 193 18.7.9 处理格式化报表 194 18.7.10 while循环和文件描述符 196 18.8 使用break和...

    shell编程.doc(变量 用户定义变量,环境变量,位置变量(shell 参数) )

    主要内容: .shell基础 基本介绍,环境,选项,特殊字符 .shell变量 用户定义变量,环境变量,位置变量(shell 参数) .shell script编程 条件测试,循环及重复控制

    LINUX与UNIX SHELL编程指南

    第十七章 条件测试 第十八章 控制流结构 第十九章 SHELL函数 第二十章 向脚本传递参数 第二一章 创建屏幕输出 第二二章 创建屏幕输入 第二三章 调试脚本 第二四章 SHELL嵌入命令 第五部分 高级SHELL编程技巧 第二五...

Global site tag (gtag.js) - Google Analytics