标签:之间 tput 学习笔记 返回 pretty ret 而在 需要 ash
关于shell语言中的if else语句中 if的判断标准到底是什么,在if后面的命令,如果是退出状态码是0,则执行位于then后面的语句,否则执行else后面的语句。
例:
#!/bin/bash
#test the if statement
if pwd
then
echo “means command ‘wpd’ output statement code 0
else
echo “pwd command dosen’t work”
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。而在书写的时候第一个方括号之后和第二个方括号之前需要加上空格
if [ condition ]
then
operation
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是字符串,就进行字符串比较。
标签:之间 tput 学习笔记 返回 pretty ret 而在 需要 ash
原文地址:http://www.cnblogs.com/sayhellowen/p/72d1ed2da502b9a35d72a24ceb884ee1.html