免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1723 | 回复: 7
打印 上一主题 下一主题

[系统管理] read 命令的一点点小疑惑 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-05-15 08:31 |只看该作者 |倒序浏览
脚本内容如下:
#!/bin/bash
read -t 5 -p "Enter you name:" name
if [[ "x$name" != "x" ]]
  then
  echo "Hello,$name.Welcome to my program"
  else
  echo "Sorry,timeout"
fi
这个是正常的。
但是做如下修改后就不正常啦。
#!/bin/bash
read -t 5 -p "Enter you name:" name
if [ -n $name ]
  then
  echo "Hello,$name.Welcome to my program"
  else
  echo "Sorry,timeout"
fi
如果正常执行的时候,在不输入的时候故意让其超时的时候,无法执行else的部分。
这点是不是与之前那个有点矛盾啊?

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
2 [报告]
发表于 2012-05-15 13:35 |只看该作者
-n测试是否是no-zero-string,既然是string,因该用double quote 括起来。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
3 [报告]
发表于 2012-05-15 13:37 |只看该作者
  1. #!/bin/bash

  2. read -t 5 -p "Enter you name:" name
  3. if [ -n "$name" ]
  4. then
  5.     echo "Hello, $name. Welcome to my program"
  6. else
  7.     echo "Sorry, timeout"
  8. fi
复制代码

论坛徽章:
0
4 [报告]
发表于 2012-05-15 19:02 |只看该作者
L_kernel 发表于 2012-05-15 13:37

是不是可以认为空文本算不上是空字符串?
不管怎么样谢啦。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
5 [报告]
发表于 2012-05-15 20:00 |只看该作者
623285961 发表于 2012-05-15 19:02
是不是可以认为空文本算不上是空字符串?
不管怎么样谢啦。
-n测试是否为null,这是-n参数的规定,后面必须要用双引号括起来。
如果不括起来,也可以使用! -z操作。
来自abs。
-n
string is not null.

       
The -n test requires that the string be quoted within the test brackets. Using an unquoted string with ! -z, or even just the unquoted string alone within test brackets (see Example 7-6) normally works, however, this is an unsafe practice. Always quote a tested string. [1]

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
6 [报告]
发表于 2012-05-15 20:01 |只看该作者
一般是用第一种方法啦,那是最少可能出现错误的。

论坛徽章:
0
7 [报告]
发表于 2012-05-18 08:26 |只看该作者
L_kernel 发表于 2012-05-15 20:00
-n测试是否为null,这是-n参数的规定,后面必须要用双引号括起来。
如果不括起来,也可以使用! -z操作。
...

那个说明文档你在哪里弄到的啊?man好像没有那么详细吧。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
8 [报告]
发表于 2012-05-18 08:37 |只看该作者
623285961 发表于 2012-05-18 08:26
那个说明文档你在哪里弄到的啊?man好像没有那么详细吧。

这里可以看到。advanced bash script
http://tldp.org/LDP/abs/html/comparison-ops.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP