我知道下面一句话的作用是判断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
请哪位大侠具体解释下这个shell语句的执行时的顺序和条件的转移
- vincent_zh
- 帖子: 129
- 注册时间: 2008-04-05 10:56
- 来自: 学校
-
- 帖子: 9
- 注册时间: 2008-01-31 17:07
我想可以这么理解:
当前面的语句执行成功后就会执行&&后面的语句 ,否则如果执行失败的话就执行 ||后面的语句
如:
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$
当前面的语句执行成功后就会执行&&后面的语句 ,否则如果执行失败的话就执行 ||后面的语句
如:
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$
- vincent_zh
- 帖子: 129
- 注册时间: 2008-04-05 10:56
- 来自: 学校
- vincent_zh
- 帖子: 129
- 注册时间: 2008-04-05 10:56
- 来自: 学校
- vincent_zh
- 帖子: 129
- 注册时间: 2008-04-05 10:56
- 来自: 学校