这是暑假回来看linux命令行与shell脚本编程大全的一些笔记,并不是全部的,只是结合本人觉得需要的一些记录,在整理发表博文时也当作一种回顾!欢迎交流指正!!
11.1使用if-then语句
if command
then
commands
fi
*bash shell的if语句会运行if行定义的命令,如果命令退出状态码是0,位于then部分的命令就会被执行,否则不会被执行。
if command; then
commands
fi
*在要执行的命令结尾加个分号,就能在同一行使用then语句了
11.2if-then-else
if command
then
commands
else
commands
fi
11.3嵌套if
if command1
then
commands
elif command2
then
more commands
fi
*elif语句行提供了另一个要测试的命令,类似于原始的if语句
11.4 test命令
if-then语句是不能测试跟命令的退出状态码无关的条件的,但test命令提供了在if-then中测试不同条件的途径,
如果test命令中列出的条件成立就会退出并返回退出状态码0,如果条件不成立就会退出并返回退出状态码1
if test condition
then
commands
fi
bash shell提供了另一种在if-then语句中声明test命令的方法:
if [ condition ]
then
commands
fi
方括号定义了test命令中用到的条件。注意:必须在括号来年观测各加一个空格。
test命令可以判断一下3类条件:
*数值比较
*字符串比较
*文件比较
#####################test命令的数值比较功能##########
-eq -ge -gt -le -lt -ne
注意:不能在test命令中使用浮点值
11.4.2 字符串比较
#################test命令的字符串比较功能###########
= != < > -n -z
注意:test的比较会将所有的标点和大写也考虑在内,且大写字母会被当成小于小写字母(但是sort刚刚相反)
注意:空的和未初始化的变量的长度都是0
注意警告:test命令是哟哦哪个标准的数学比较符来表示字符串比较,而用文本代码来表示数值比较。
11.4.3 文件比较
######################test命令的文件比较功能##############
-d file -e file -f file -r file
-s file -w file -x file -O file
-G file file1 -nt file2 file1 -ot file2
11.5 符合条件测试
*[ condition1 ] && [ condition2 ]
*[ condition1 ] || [ condition2 ]
11.6 if-then的高级特性
*用于数学表达式的双尖括号
*用于高级字符串处理功能的双方括号
11.6.1 使用双尖括号
(( expression ))
expression可以是任意的数学赋值或者比较表达式,除了test中用到的标准数学运算符,还可以是其他的
#####################################
var++ var-- ++var --var ||
! ~ ** <<
>> & | &&
11.6.2 使用双方括号
[[ expression ]]
双方括号中的expression使用了test中采用的标准字符串,更是提供了test命令未提供的另一个特性——模式匹配
如 if [[ $USER == r* ]]
11.7 case命令
case variable in
pattern1 | pattern2) commands1::
pattern3) commands2::
*) default commands::
esac
*注意:可以通过竖线操作符来分割模式,在一行列出多个模式,星号会铺货所有跟所有类出来的模式都不匹配的值。