码迷,mamicode.com
首页 > 系统相关 > 详细

linux学习笔记

时间:2017-03-06 22:14:15      阅读:269      评论:0      收藏:0      [点我收藏+]

标签:之间   tput   学习笔记   返回   pretty   ret   而在   需要   ash   

关于shell语言中的if else语句中 if的判断标准到底是什么,在if后面的命令,如果是退出状态码是0,则执行位于then后面的语句,否则执行else后面的语句。

例:

  1. #!/bin/bash
  2. #test the if statement
  3. if pwd
  4. then
  5. echo means command wpd output statement code 0
  6. else
  7. echo pwd command dosent work
  8. fi

而什么是状态码?==》在linux中每个 command运行并退出时都会产生一个退出状态码给shell,它的范围是0-255之间的数。一个command成功运行,那么它退出时产生的退出状态码则为0,否则产生的退出状态码是一个非0的正数,具体如图1所示。
技术分享
而在实际的shell编程中,关键字if 后面一般并不直接接command,而是if [ condition ]。注意加上了方括号[ ]和没有加方括号是有区别的。
加上了方括号表示 if test condition,命令test会测试后面跟的条件condition,如果条件成立则返回退出状态码0,否则返回退出状态码非0的正数。具体如图2所示.
技术分享
在图中,用test命令测试pwdd与pwddfg(这2个变量都没有赋值),但是查看退出状态码,发现状体码为0,
在图中,用test命令测试 test -f gdga ;test -d gdga,查看退出状态码都为1(一般性未知错误)。其原因是因为 test -f file;test -d file,它会把后面的参数当做是文件,并检查是否是文件(-f)以及检查是否是文件目录(-d)。而gdga根本没有赋值。所以返回非0状态码了。
方括号定义了测试条件,即用[ ]来代替命令test。而在书写的时候第一个方括号之后和第二个方括号之前需要加上空格

  1. if [ condition ]
  2. then
  3. operation
  4. fi

在方括号(test命令)可以判断3中条件:
1.数值比较
2.字符比较
3.文件比较
在比较之后,得到的结果是boolean值(true 和false),方括号(test命令)会将boolean值结果转化为退出状态码,如果boolean值为 true 方括号(test命令)会为if-else产生退出状态码0,如果boolean值为 false 方括号(test命令)会为if-else产生非0退出状态码。
而在condition判断的时候,主要是根据参数来判断目标是文件还是字符串。具体如图3和图4所示。

技术分享

技术分享

在图3代码中,如果方括号中的参数接的是-d 则把变量test当成文件进行处理,如果接的 = 则认为变量test是字符串,就进行字符串比较。





linux学习笔记

标签:之间   tput   学习笔记   返回   pretty   ret   而在   需要   ash   

原文地址:http://www.cnblogs.com/sayhellowen/p/72d1ed2da502b9a35d72a24ceb884ee1.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!