调用 |
解释 |
$# |
是传给脚本的参数个数 |
$0 |
是脚本本身的名字 |
$1 |
是传递给该shell脚本的第一个参数 |
$2 |
是传递给该shell脚本的第二个参数 |
$@ |
是传给脚本的所有参数的列表 |
$* |
是以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9个 |
$$ |
是脚本运行的当前进程ID号 |
$? |
是显示最后命令的退出状态,0表示没有错误,其他表示有错误 |
调用 |
解释 |
-r |
用户可读为真 |
-w |
用户可写为真 |
-x |
用户可执行为真 |
-f |
文件为正规文件为真 |
-d |
文件为目录为真 |
-c |
文件为字符特殊文件为真 |
-b |
文件为块特殊文件为真 |
-s |
文件大小非0时为真 |
-t |
当文件描述符(默认为1)指定的设备为终端时为真 |
调用 |
解释 |
-a |
与(and) |
-o |
或(or) |
! |
非 |
if [ "$a" -eq 1 -o "$b" -eq 2 ] && [ "$c" -eq 3 ]; then
IF高级特性:
双圆括号(( )):表示数学表达式
在判断命令中只允许在比较中进行简单的算术操作,而双圆括号提供更多的数学符号,而且在双圆括号里面的’>’,’<'号不需要转意。
双方括号[[ ]]:表示高级字符串处理函数
双方括号中判断命令使用标准的字符串比较,还可以使用匹配模式,从而定义与字符串相匹配的正则表达式。
双括号的作用:
在shell中,[ $a != 1 || $b = 2 ]是不允许出,要用[ $a != 1 ] || [ $b = 2 ],而双括号就可以解决这个问题的,[[ $a != 1 || b = 2 ] ] 。 又 比 如 这 个 [ " b = 2 ]]。又比如这个[ " b=2]]。又比如这个["a" -lt “ b " ] , 也 可 以 改 成 双 括 号 的 形 式 ( ( " b" ],也可以改成双括号的形式((" b"],也可以改成双括号的形式(("a”< “$b”))
调用 |
解释 |
事例| |
-eq |
等于 |
如:if [ “ a " − e q " a" -eq " a"−eq"b” ] |
-ne |
不等于 |
如:if [ “ a " − n e " a" -ne " a"−ne"b” ] |
-gt |
大于 |
如:if [ “ a " − g t " a" -gt " a"−gt"b” ] |
-ge |
大于等于 |
如:if [ “ a " − g e " a" -ge " a"−ge"b” ] |
-lt |
小于 |
如:if [ “ a " − l t " a" -lt " a"−lt"b” ] |
-le |
小于等于 |
如:if [ “ a " − l e " a" -le " a"−le"b” ] |
> |
大于(需要双括号) |
如:if((“ a " > " a" > " a">"b”)) |
>= |
大于等于,需要双括号 |
如:if((“ a " > = " a" >= " a">="b”)) |
<= |
小于等于,需要双括号 |
如:if((“ a " > = " a" >= " a">="b”)) |
调用 |
解释 |
= |
等于,如:if [ “ a " = " a" = " a"="b” ] |
== |
等于,如:if [ “ a " = = " a" == " a"=="b” ],与=等价 |
[ -z STRING ] |
如果STRING的长度为零则返回为真,即空是真 |
[ -n STRING ] |
如果STRING的长度非零则返回为真,即非空是真 |
[ STRING1 ] |
如果字符串不为空则返回为真,与-n类似 |
[ STRING1 == STRING2 ] |
如果两个字符串相同则返回为真 |
[ STRING1 != STRING2 ] |
如果字符串不相同则返回为真 |
[ STRING1 < STRING2 ] |
如果 “STRING1”字典排序在“STRING2”前面则返回为真。 |
[ STRING1 > STRING2 ] |
如果 “STRING1”字典排序在“STRING2”后面则返回为真。 |
#!/bin/bash
a=10
b=20
if [ $a -lt $b ] && [ $a -eq 11 ]
then
echo "小于20"
fi
#!/bin/bash
a=0
b=0
c=5
if [ $a = 0 -a $b = 0 ] && [ $c != 0 ]; then
echo "success"
fi
#!/bin/bash
a=0
b=0
c=5
if [ $a -eq 0 -a $b -eq 0 ] && (($c >= 5)); then
echo "success"
fi