1. 字符串测试举例
     提示:下面的$file并未定义,而$file1 在上面测试中已定义。
  范例1:单条件字符串测试:

[root@test-1 ~]# file1=/etc/services;file2=/etc/rc.local
[root@test-1 ~]# echo $file1 $file2
/etc/services /etc/rc.local
[root@test-1 ~]# [ -n "$file" ] && echo 1 ||echo 0
0
#若串长度不为0则真。因$file未定义长度为0,所以为假(0)
[root@test-1 ~]# [ -z "$file" ] && echo 1 ||echo 0
1
#若串长度为0则真。因$file未定义长度为0,所以为真(1)
[root@test-1 ~]# [ -n "$file1" ] && echo 1 ||echo 0
1
#若串长度不为0则真。因$file已定义变量长度不为0,所以为真(1)
[root@test-1 ~]# [ -z "$file1" ] && echo 1 ||echo 0
0
#若串长度为0则真。因$file已定义变量长度不为0,所以为假(0) 提示:去掉双引号看看
[root@test-1 ~]# [ -n $file ] && echo 1 ||echo 0
1
[root@test-1 ~]# [ -z $file1 ] && echo 1 ||echo 0
0
提示:字符串比较一定要加双引号

 范例2(生产):系统脚本/etc/init.d/nfs字符串测试的应用:

# Remote quota server
[ -z "$RQUOTAD" ] && RQUOTAD=`type -path rpc.rquotad`
[ -z "$MOUNTD_NFS_V2" ] && MOUNTD_NFS_V2=default
[ -z "$MOUNTD_NFS_V3" ] && MOUNTD_NFS_V3=default # Number of servers to be started by default
[ -z "$RPCNFSDCOUNT" ] && RPCNFSDCOUNT=8
[ -n "$NLM_GRACE_PERIOD" ] && {
/sbin/sysctl -w fs.nfs.nlm_grace_period=$NLM_GRACE_PERIOD >/dev/null 2>&1
}

 范例3:多条件字符串测试:

[root@test-1 ~]# file1=/etc/services;file2=/etc/rc.local
[root@test-1 ~]# echo $file1 $file2
/etc/services /etc/rc.local
[root@test-1 ~]# [ -n "$file" ] && echo 1 ||echo 0
0
#若串长度不为0则真。因$file未定义长度为0,所以为假(0)
[root@test-1 ~]# [ -z "$file" ] && echo 1 ||echo 0
1
#若串长度为0则真。因$file未定义长度为0,所以为真(1)
[root@test-1 ~]# [ -z "$file1" ] && echo 1 ||echo 0
0
[root@test-1 ~]# [ -z "$file1" -a -z "file2" ] && echo 1 ||echo 0
0
[root@test-1 ~]# [[ -z "$file1" && -z "file2" ]] && echo 1 ||echo 0
0
[root@test-1 ~]# [[ -z "$file1" || -n "file2" ]] && echo 1 ||echo 0
1
[root@test-1 ~]# [ -z "$file1" -o -z "file2" ] && echo 1 ||echo 0
0
[root@test-1 ~]# [ -n "$file1" -o -z "file2" ] && echo 1 ||echo 0
1
[root@test-1 ~]# [ "$file1" == "file2" ] && echo 1 ||echo 0
0
[root@test-1 ~]# [ "$file1" = "file2" ] && echo 1 ||echo 0
0
[root@test-1 ~]# [ "$file1" !== "file2" ] && echo 1 ||echo 0
-bash: [: !==: binary operator expected
0
[root@test-1 ~]# [ "$file1" != "file2" ] && echo 1 ||echo 0
1
[root@test-1 ~]# [ ! "$file1" == "file2" ] && echo 1 ||echo 0
1
[root@test-1 ~]# [ ! "$file1" \> "file2" ] && echo 1 ||echo 0
1
[root@test-1 ~]# [ ! "$file1" \< "file2" ] && echo 1 ||echo 0
0
[root@test-1 ~]# [ ! "${#file1}" \< "${#file2}" ] && echo 1 ||echo 0
1

  

最新文章

  1. 发现Select等注入语句自动跳转Code
  2. HDU 4604 Deque(最长上升子序)
  3. gzip压缩JavaScript
  4. 06day1
  5. JavaScipt call和apply用法
  6. android 文件上传
  7. Java基础知识强化之网络编程笔记16:Android网络通信之 使用Http的Get方式读取网络数据(基于HTTP通信技术)
  8. VS(Microsoft Visual Studio2010)工具打开项目所需的应用程序,出现未安装(.csproj)的应用程序的解决办法
  9. 【Maven实战】传递性依赖的问题
  10. SVN的错误: working copy locked
  11. VS2008编译iconv静态链接库
  12. c++的复制构造函数
  13. ibatis参数传递小技巧 - 疯狂的菠菜 - ITeye技术网站
  14. (转)java二维数组的深度学习(静态与动态)
  15. iptables介绍
  16. DataGridView导出数据到Excel
  17. java32
  18. 环同态p64推论
  19. angular 项目 error TS2451: Cannot redeclare block-scoped variable &#39;ngDevMode&#39;
  20. 版本控制工具git

热门文章

  1. Google Code Jam 2020 Round1B Expogo
  2. springboot +jsp项目打包部署到华为云服务器
  3. UI中列表
  4. [SpringBoot项目]问题及解决总结
  5. asp.net中的日志添加和未处理异常的记录
  6. JS进阶 | 解决JQ keyup事件延迟的问题
  7. kvm虚拟化存储管理(3)
  8. Arnold变换(猫脸变换)
  9. 1.4Hadoop伪分布式安装
  10. C++获取运行程序当前目录