调用 | 解释 |
---|
$# | 是传给脚本的参数个数 |
$0 | 是脚本本身的名字 |
$1 | 是传递给该shell脚本的第一个参数 |
$2 | 是传递给该shell脚本的第二个参数 |
$@ | 是传给脚本的所有参数的列表 |
$* | 是以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9个 |
$$ | 是脚本运行的当前进程ID号 |
$? | 是显示最后命令的退出状态,0表示没有错误,其他表示有错误 |
调用 | 解释 |
---|
-r | 用户可读为真 |
-w | 用户可写为真 |
-x | 用户可执行为真 |
-f | 文件为正规文件为真 |
-d | 文件为目录为真 |
-c | 文件为字符特殊文件为真 |
-b | 文件为块特殊文件为真 |
-s | 文件大小非0时为真 |
-t | 当文件描述符(默认为1)指定的设备为终端时为真 |
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