[toc]
if
一、条件测试的表达式:
[ expression ]
括号两端必须要有空格
[[ expression ]]
括号两端必须要有空格
test expression
组合测试条件:
- -a: and
- -o: or
- !: 非
二、整数比较:
-eq
测试两个整数是否相等-ne
测试两个整数是否不等-gt
测试一个数是否大于另一个数-lt
测试一个数是否小于另一个数-ge
大于或等于-le
小于或等于
命令间的逻辑关系
- 逻辑与:&&
- 第一个条件为假 第二个条件不用在判断,最总结果已经有
- 第一个条件为真,第二个条件必须得判断
- 逻辑或:||
三、字符串比较
- 字符串比较:
- == 等于 两边要有空格
- != 不等
>
大于- < 小于
四、文件测试
-z string
测试指定字符是否为空,空着真,非空为假-n string
测试指定字符串是否为不空,空为假 非空为真-e FILE
测试文件是否存在-f file
测试文件是否为普通文件-d file
测试指定路径是否为目录-r file
测试文件对当前用户是否可读-w file
测试文件对当前用户是否可写-x file
测试文件对当前用户是都可执行- -z 是否为空 为空则为真
- -a 是否不空
五、if 语法
if 判断条件 0为真 其他都为假
单分支if语句
if 判断条件;then
statement1
statement2
.......
fi
双分支的if语句:
if 判断条件;then
statement1
statement2
.....
else
statement3
statement4
fi
Note:
if 语句进行判断是否为空
[ "$name” = "" ]
等同于
[ ! "$name" ]
[ -z "$name" ]
Note:
使用if语句的时候进行判断如果是进行数值类的 ,建议使用 let(())进行判断
对于字符串等使用test[ ] or [[ ]] 进行判断
(())中变量是可以不使用$来引用的
example:表述数字范围的时候 可以使用if可以是使用case
if [ $x -gt 90 -o $x -lt 100 ]
case $x in
100)
9[0-9])
if [ "X$name" != "x" ]
这个语句的意思是如果$name为空,那么X=X成立折执行下面的结果;
写脚本的时候很多时候需要用到回传命令,$?如果上一个命令执行成功,回传值为0,否则为1~255之间的任何一个
0为真 非0为假
来自: https://blog.51cto.com/lovelace/1211353
引号/单引号/反引号
- 双引号(" “):在双引号中,除了$, ‘’, `和\以外所有的字符都解释成字符本身。也就说可以读取变量
- 单引号(’ ‘):在单引号中所有的字符包括特殊字符($,’’,`和\)都将解释成字符本身而成为普通字符。
- 反引号(` `):在反引号中的字符串将解释成shell命令来执行。
来自:https://www.jb51.net/article/108330.htm
变量
字符串变量
注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样。同时,变量名的命名须遵循如下规则:
- 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。
- 中间不能有空格,可以使用下划线(_)。
- 不能使用标点符号。
- 不能使用bash里的关键字(可用help命令查看保留关键字)。
使用一个定义过的变量,只要在变量名前面加美元符号即可,如:
your_name="qinjx"
echo $your_name
echo ${your_name}
your_name="xkj"
echo $your_name
Shell 数组
bash支持一维数组(不支持多维数组),并且没有限定数组的大小。
类似于 C 语言,数组元素的下标由 0 开始编号。获取数组中的元素要利用下标,下标可以是整数或算术表达式,其值应大于或等于 0。
定义数组 在 Shell 中,用括号来表示数组,数组元素用"空格"符号分割开。定义数组的一般形式为:
数组名=(值1 值2 ... 值n)
例如:
array_name=(value0 value1 value2 value3)
可以不使用连续的下标,而且下标的范围没有限制。
array_name[0]=value0
array_name[1]=value1
array_name[n]=valuen
读取数组元素值的一般格式是:
${数组名[下标]}
# 例如:
valuen=${array_name[n]}
echo ${array_name[@]} #输出全部元素
来自: https://www.runoob.com/linux/linux-shell-variable.html
参数取值
$n 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2
$? 上个命令的退出状态,或函数的返回值。成功返回0,失败返回1
$# 传递给脚本或函数的参数个数
$* 所有这些参数都被双引号引住。若一个脚本接收两个参数,$等于$1$2
$0 正在被执行命令的名字。对于shell脚本而言,这是被激活命令的路径
$@ 被双引号(” “)包含时,与 $* 稍有不同。若一个脚本接收到两个参数,$@等价于$1$2
$$ 当前shell的进程号。对于shell脚本,这是其正在执行时的进程ID
$! 前一个后台命令的进程号