Chinaunix

标题: sehll -n -s 字符串测试,疑问 [打印本页]

作者: 青颜如风    时间: 2016-06-17 09:53
标题: sehll -n -s 字符串测试,疑问
本帖最后由 青颜如风 于 2016-06-17 09:54 编辑

字符串测试

-n string: 测试指定字符串是否为空,空则真,不空则假.
-s string: 测试指定字符串是否不空,不空则真,空则为假.

[root@localhost ~]# a="abc"; [ -n "$a" ];echo $?      #$a不空,假,输出0
0
[root@localhost ~]# a=""; [ -n "$a" ];echo $?            #$a为空,真,输出1
1
[root@localhost ~]# a=""; [ -s "$a" ];echo $?            #$a为空,假,输出却为  1 ;假不是应该输出0么?
1
[root@localhost ~]# a="abc"; [ -s "$a" ];echo $?       #$a不空,真,输出1
1

问题:
   [root@localhost ~]# a=""; [ -s "$a" ];echo $?            #$a为空,假,输出却为  1 ;假,不是应该输出0么?
   1


是我理解错了吗?请大大们,解惑 .
作者: 过过招    时间: 2016-06-17 09:59
a=""; [ -z "$a" ];echo $?
作者: 青颜如风    时间: 2016-06-17 10:23
回复 2# 过过招

谢谢,回复:这个明白,疑问的是 -s选项;

[ -S FILE ]  如果 FILE 存在且是一个套接字则为真.  

[root@web tmp]# [ -s "/tmp/mysql.sock" ]; echo $?
1

[root@web tmp]# [ -s "/tmp/abc.sock" ]; echo $?      #,abc.sock这个套接字,不存在,却输出 1 ,为何?
1
  
作者: blackold    时间: 2016-06-17 10:25
回复 3# 青颜如风


    不存在那肯定输出1了。

-s File 和 -s string 不同。
作者: 过过招    时间: 2016-06-17 10:31
-s 用于file
-z 用于字符串

别混淆了
作者: 青颜如风    时间: 2016-06-17 10:32
回复 4# blackold

谢谢回复,查资料已了然.



   
作者: 青颜如风    时间: 2016-06-17 10:35
回复 5# 过过招

谢谢,了然了. 还有个大S,判断是否为套接字,理清了.
   
作者: 过过招    时间: 2016-06-17 10:36
回复 7# 青颜如风


    古德,吴瑞古德,知其然,知其所以然。做技术就应该刨根问底,看好你!




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2