当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 9 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 请哪位大侠具体解释下这个shell语句的执行时的顺序和条件的转移
帖子发表于 : 2008-04-14 12:52 
头像

注册: 2008-04-05 10:56
帖子: 129
地址: 学校
送出感谢: 0 次
接收感谢: 0 次
我知道下面一句话的作用是判断var变量是不是一个整数,但我不明白的是&&后面的两个语句,为什么当var变量是整数时就会执行echo $var is an interger,而var变量不是整数时就会执行echo $var is not an interger,语句是怎么做到这一点的呢??请哪位大侠详细解释下,不胜感激

echo $var | grep -q ‘^[-]\?[0-9]\+$’ && echo $var is an interger || echo $var is not an interger


_________________
修己,安人


页首
 用户资料  
 
2 楼 
 文章标题 :
帖子发表于 : 2008-04-15 14:33 

注册: 2008-01-31 17:07
帖子: 9
送出感谢: 0 次
接收感谢: 0 次
我想可以这么理解:

当前面的语句执行成功后就会执行&&后面的语句 ,否则如果执行失败的话就执行 ||后面的语句

如:
mrwsr@Mr:/tmp/test$ ls
mrwsr@Mr:/tmp/test$
mrwsr@Mr:/tmp/test$ ls test.txt && echo '文件已存在' || echo '文件不存在'
ls: test.txt: No such file or directory
文件不存在
mrwsr@Mr:/tmp/test$ touch test.txt
mrwsr@Mr:/tmp/test$ ls test.txt && echo '文件已存在' || echo '文件不存在'
test.txt
文件已存在
mrwsr@Mr:/tmp/test$


页首
 用户资料  
 
3 楼 
 文章标题 :
帖子发表于 : 2008-04-15 14:55 
头像

注册: 2008-04-05 10:56
帖子: 129
地址: 学校
送出感谢: 0 次
接收感谢: 0 次
是这样子执行的???
但我不明白为什么会这样子执行呢??


_________________
修己,安人


页首
 用户资料  
 
4 楼 
 文章标题 :
帖子发表于 : 2008-04-16 9:14 
头像

注册: 2008-04-05 10:56
帖子: 129
地址: 学校
送出感谢: 0 次
接收感谢: 0 次
我弄懂了
因为||的优先级低于&&的优先级,就是这样子而已


_________________
修己,安人


页首
 用户资料  
 
5 楼 
 文章标题 :
帖子发表于 : 2008-04-16 9:28 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 272
类似C的那种:?: 的语法了
为真执行 &&
为假执行 ||

单条语句经常这么写的。


_________________
● 鸣学


页首
 用户资料  
 
6 楼 
 文章标题 :
帖子发表于 : 2008-04-16 9:32 
头像

注册: 2007-10-19 14:51
帖子: 4953
地址: 深圳
送出感谢: 0 次
接收感谢: 2
vincent_zh 写道:
我弄懂了
因为||的优先级低于&&的优先级,就是这样子而已
||和&&的优先级是相同的。
只是如果第一个为真的话,到第二个那里就短路了,所以第三个不执行。
如果第一个为假,第二个也被自动忽略了,就去执行第三个了。


_________________
Nothing 有事请发邮件到 yms541 AT gmail.com
alias 爱慕颇雷尔='mplayer'


页首
 用户资料  
 
7 楼 
 文章标题 :
帖子发表于 : 2008-04-17 16:50 
头像

注册: 2008-04-05 10:56
帖子: 129
地址: 学校
送出感谢: 0 次
接收感谢: 0 次
不是吧,&&的优先级是高过||的


_________________
修己,安人


页首
 用户资料  
 
8 楼 
 文章标题 :
帖子发表于 : 2008-04-17 17:02 
头像

注册: 2007-10-19 14:51
帖子: 4953
地址: 深圳
送出感谢: 0 次
接收感谢: 2
vincent_zh 写道:
不是吧,&&的优先级是高过||的
你自己写几行代码试试吧。


_________________
Nothing 有事请发邮件到 yms541 AT gmail.com
alias 爱慕颇雷尔='mplayer'


页首
 用户资料  
 
9 楼 
 文章标题 :
帖子发表于 : 2008-04-19 23:48 
头像

注册: 2007-09-29 3:09
帖子: 5773
送出感谢: 0 次
接收感谢: 3
yaoms 写道:
vincent_zh 写道:
不是吧,&&的优先级是高过||的
你自己写几行代码试试吧。


echo $var | grep -q ‘^[-]\?[0-9]\+$’ || echo $var is not an interger && echo $var is an interger

搞定~


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 9 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 2 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译