所谓条件测试就是根据某种条件来判断的。
首先:介绍一下条件表达式的类型
整数测试类型
字符测试类型
文件测试类型
条件测试表达式的语法结构:
[ expression ]
[[ expression ]]
test exoression
接下来介绍这些类型的使用:
整数测试类型:一些选项意义
-eq:测试两个整数是否相等
-ne:测试像个整数是否不相等
-gt:测试num1是否大于num2
-lt:测试num1是否小于num2
-ge:测试num1是否大于或等于num2
-le:测试num1是否小于或等于num2
文件测试
-e FILE:测试指定文件是否存在
-f FILE:测试指定文件是否是普通文件
-d FILE:测试指定文件是否是目录
-p FIEL:测试指定文件是否是管道文件
-S FILE:测试指定文件是否是套接字文件
-h|-L:测试指定文件是否是符号连接文件
-s FILE:测试指定文件是否不空,不空为真,空为假。
-r FILE:测试当前用户是否对指定文件具有可读取的权限
-w FILE:测试当前用户是否对指定文件具有可写的权限
-x FILE:测试当前用户是否对指定文件具有可执行的权限
字符串测试
==或=(==两边有空格,否则系统理解为赋值运算):测试两个字符串是否相等;
>,<:用来比较两个字符串的字符长度
-z:测试某个字符串是否为空。空为真,非空为假
-n:测试某个字符串是否为非空。非空为真,空为假
组合测试条件
-a:与关系
-o:或关系
!:非关系
命令间的逻辑关系运算
&&:表示逻辑与,表示两个表达式都为真时,结果才为真;否则为假
||:逻辑或,表示两个表达式至少有一个为真时,结果才为真;否则为假
!:取反操作
控制结构之if语句
首先介绍if语句
if语句分为单分支if语句和双分支if语句
单分支if语句的语法结构:
if expression ;then 当表达式为真时,执行语句1,2,..;如果为假,则不执行
statement1
statement2
...
fi
双分支if语句
if exppression ;then 当表达式为真则执行语句1,2,;如果为假,则执行语句3,4,..
statement1
statement2
...
else
statement3
statement4
...
fi
说明:如果要使用一个命令的执行状态结果(成功或失败),一定不能加``,直接使用该命令即可。
例如:if id USERNAME 判断某个用户是否存在,而不是显示用户账号信息。
如果要使用一个命令的执行结果则必须要加``,例如NUM=`wc -l /etc/passwd | cut -d: -f1`
如果想要把一个命令的执行状态结果保存起来,并且作为执行成功与否的判断条件,则需要先执行命令,然后在引用状态结果
例如: id -u user1
RETAL=$?
多分支if语句
多分支if语句一般用在某一件事物存在多种可能性的情况下
多分支if语句只执行一个,一旦碰到符合条件的,执行该范围内的语句后,也不再往后执行且退出。如果没有找到符合条件的,则将会执行最后一个else语句。
语法结构:
if expression;then
statement1
...
elif expression;then
statement2
...
elif expression;then
statement3
...
...
else
statement4
和if多分支语句相似case...esac语句也可以用来判断某种事物具有多种可能性。
语法结构如下:
case $变量 in 将变量的值与value进行比较,符合则执行相应语句并退出,不符合则执行*)内的语句且退出。
value1)
statement
;;
value2)
statemnet
;;
...
*) *表示为前面都不符合条件,从而执行该语句
statement
esac
case...esac语句也是当某一条符合后,则不会继续往后判断执行且退出。
我们知道程序执行完毕后,会返回一个状态码,这个状态码可以说明该程序是执行成功还是执行失败。
那么执行失败的类型不同,返回的状态码也不同,那么我们可不可以自定义程序返回的状态码呢?
使用exit命令即可
exit:用于退出脚本
exit n:这里可以定义脚本执行结束后,返回的执行状态码
说明:如果脚本没有明确定义状态码,那么最后一条执行语句的状态码就是该脚本退出的状态码
SHELL如何进行算术运算的呢?
以下共介绍四种方法
第一种方法:使用let关键字,例如:
A=3
B=6
let C=$A+$B
echo $C
第二种方法:
使用C=$[ 算术表达式 ](注意空格)
第三种方法:$(())
C=$((算术表达式))
第四种方法:
expr 算术表达式:表达式中各操作数及运算符之间用空格隔开,且要使用命令引用机制
形如:C=`expr $A + $B `
、
使用bc来进行数学运算
scale=2:表示保留小数位
生成列表的方式
方式1:{1..100}
方式2:`seq [起始数,[步进长度]] 结束数 ` #步进长度就是以该值来递增或递减来生成下一位数
read命令的使用
read命令可以接受来自键盘的数据,并将其赋值给变量
语法格式:read [-pt] VAR_NAME
-p:后面接提示语
-t:后面接系统等待的时间,防止用户一直没有输入,系统等待时间过长。超时后,自动退出。
本文出自 “linux学习之路” 博客,谢绝转载!