Linux shell if语句
1ifcp"$1""#$1"2then3echo"$?"4else5echo"Error"6fi这个例子中,为什么cp成功了会继续执行阿?cp成功了会返回0阿,if不是在...
1 if cp "$1" "#$1"
2 then
3 echo "$?"
4 else
5 echo "Error"
6 fi
这个例子中,为什么cp成功了会继续执行阿?cp成功了会返回0阿,if不是在非零才会执行then么?0不就执行else了么?
很疑惑... 展开
2 then
3 echo "$?"
4 else
5 echo "Error"
6 fi
这个例子中,为什么cp成功了会继续执行阿?cp成功了会返回0阿,if不是在非零才会执行then么?0不就执行else了么?
很疑惑... 展开
3个回答
展开全部
先谈$这个玩意,很有意思, 很多命令不带返回值
也就是说执行完了就完了,没有任何反馈,你也不知道执行对了还是错了
举个例子
test 2 -gt 1 (判断2是否大于一)
如果直接执行,无返回值
执行完之后,再执行
echo $?
看看,它就会说
0
0代表执行完毕,没有错误
不信你把这个表达式换成
test 2 -gt 3
再
echo $?
他就会显示
1
非零即是错误。
顺带看看test的其它比较用法
test int1 -eq int2 判断是否相等
test int1 -ne int2 判断是否不等
test int1 -lt int2 判断是否小于
test int1 -le int2 判断是否不小于
test int1 -gt int2 判断是否大于
test int1 -ge int2 判断是否不大于
test判断逻辑表达式
test 条件1 -a 条件2 条件一和2全部成立
test 条件1 -o 条件2 条件1或2成立一个即可
shell脚本下真假不是由整数决定的,
而必须进行了某个测试,例如-eq -d等;
也就是说一个表达式,无论是数字、字符串,test的结果都是true,例如
S=0
test $S
无论S取值什么都是true
但是如果 test $S -eq $S2,即用到了test所支持的表达式有了真假
最后,test也是一个程序,当他test的内容是true时它返回值是0,也就是你echo $?的结果
linux下的真假与linux下shell中的真假,分清楚了就ok。其实没有什么难的。
在linux下c编程中if(i)如果i=0,是不会执行。他也是先判断是不是为真,0为假,非0为真。
也就是说执行完了就完了,没有任何反馈,你也不知道执行对了还是错了
举个例子
test 2 -gt 1 (判断2是否大于一)
如果直接执行,无返回值
执行完之后,再执行
echo $?
看看,它就会说
0
0代表执行完毕,没有错误
不信你把这个表达式换成
test 2 -gt 3
再
echo $?
他就会显示
1
非零即是错误。
顺带看看test的其它比较用法
test int1 -eq int2 判断是否相等
test int1 -ne int2 判断是否不等
test int1 -lt int2 判断是否小于
test int1 -le int2 判断是否不小于
test int1 -gt int2 判断是否大于
test int1 -ge int2 判断是否不大于
test判断逻辑表达式
test 条件1 -a 条件2 条件一和2全部成立
test 条件1 -o 条件2 条件1或2成立一个即可
shell脚本下真假不是由整数决定的,
而必须进行了某个测试,例如-eq -d等;
也就是说一个表达式,无论是数字、字符串,test的结果都是true,例如
S=0
test $S
无论S取值什么都是true
但是如果 test $S -eq $S2,即用到了test所支持的表达式有了真假
最后,test也是一个程序,当他test的内容是true时它返回值是0,也就是你echo $?的结果
linux下的真假与linux下shell中的真假,分清楚了就ok。其实没有什么难的。
在linux下c编程中if(i)如果i=0,是不会执行。他也是先判断是不是为真,0为假,非0为真。
参考资料: http://linux.chinaunix.net/bbs/viewthread.php?tid=1038333&pid=6832692&page=2&extra=#pid6832692
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
tux@tux-desktop:~$ ppwd
bash: ppwd: command not found
tux@tux-desktop:~$ echo $?
127
tux@tux-desktop:~$ pwd
/home/tux
tux@tux-desktop:~$ echo $?
0
在SHELL里面,返回0,表明命令成功执行。。。。
在C语言里,是你说的那个情况。
这两个情况,还是有点区别的。。。。
bash: ppwd: command not found
tux@tux-desktop:~$ echo $?
127
tux@tux-desktop:~$ pwd
/home/tux
tux@tux-desktop:~$ echo $?
0
在SHELL里面,返回0,表明命令成功执行。。。。
在C语言里,是你说的那个情况。
这两个情况,还是有点区别的。。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
linux 0为真
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询