中括号
中括号分为单中括号[],和双中括号[[]],中括号一般用于表达式判断中,小括号也可以用于表达式,这个后面提到。
单中括号[]
1
2
3
4
5
|
A=5
B=3
[ $A -
eq
$B ] 判断A是否等于B
[ ${A} -
eq
${B} ] 作用同上
[
"${A}"
-
eq
"${B}"
] 作用同上
|
1
2
3
|
A=ABC
[ $A ==
"ABC"
] 或写成 [ ${A} ==
"ABC"
] 或写成 [
"${A}"
==
"ABC"
]
[ $A \>
"ABC"
]
|
1
2
|
[ -d .
/aaa
.sh -a -e .
/bbb
] 测试aaa.sh是否为目录并且bbb是否存在,如果都符合则返回真
[ -d .
/aaa
.sh -o -e .
/bbb
] 测试aaa.sh是否为目录并且bbb是否存在,满足一个条件则返回真
|
我们通过上面可以看出使用单中括号的一些规则:
-
变量与中括号之间要有空格
-
变量与操作符之间也要有空格
-
变量可以直接用$进行引用,也可以使用${}以及"${}"进行引用,虽然可以直接使用${},但是建议还是用"${}",或者直接用$,来引用变量
-
字符串要用双引号引起来
-
字符串比较一般使用==来做字符串是否相同测试,使用<或者>进行大小比较,在单中括号中对字符进行大于和小于的比较要用转移\>和\<。比较原理就是对比ASCII进行对比。
-
另外在单中括号中还可以使用-a和-o这样的逻辑运算符
双中括号[[]]:
1
2
3
4
5
|
A=5
B=3
[[ $A -
eq
$B ]] 判断A是否等于B
[[ ${A} -
eq
${B} ]] 作用同上
[[
"${A}"
-
eq
"${B}"
]] 作用同上
|
1
2
3
|
A=ABC
[[ $A ==
"ABC"
]] 或写成 [[ ${A} ==
"ABC"
]] 或写成 [[
"${A}"
==
"ABC"
]] 或写成 [[ $A == ABC ]]
[[ $A >
"ABC"
]]
|
1
2
|
[[ -d .
/aaa
.sh && -e .
/bbb
]] 测试aaa.sh是否为目录并且bbb是否存在,如果都符合则返回真
[[ -d .
/aaa
.sh || -e .
/bbb
]] 测试aaa.sh是否为目录并且bbb是否存在,满足一个条件则返回真
|
1
2
3
4
|
A=ABC
[[ $A =~
"A"
]] 做模式匹配,这个表达式为真
或写成 [[ ${A} =~
"A"
]] 或写成 [[
"$[A]"
=~
"A"
]]
[[ $A = A* ]] 表达式为真 [[ $A = B* ]] 表达式为假
|
-
双中括号的使用和单中括号的使用规则类似
-
双中括号中间字符串的大于小于比较不需要转义,且字符串可以不用双引号引用
-
双中括号里面可以使用&&、||做逻辑运算符
-
双中括号里面还可以做模糊匹配,使用=~表达式2可以是正则表达式
1
|
[ 表达式1 -a 表达式2 ] 等效于 [[ 表达式1 && 表达式2 ]] 等效于 [ 表达式1 ] && [ 表达式2 ] 等效于 [[ 表达式1 ]] && [[ 表达式2 ]]
|
1
|
[ 表达式1 -o 表达式2 ] 等效于 [[ 表达式1 || 表达式2 ]] 等效于 [ 表达式1 ] || [ 表达式2 ] 等效于 [[ 表达式1 ]] || [[ 表达式2 ]]
|
小括号
单小括号
单小括号单独使用是表示指令组,会通过子shell的方式依次执行括号中的命令
1
|
(
ls
./;
echo
"hello"
;
mkdir
-p
/tmp/ccc
)
|
最常见的用法这是命令替换中使用,命令替换也可以使用反引号``
1
2
|
echo
"当前目录是:$(pwd)"
echo
"当前目录是:`pwd`"
|
双小括号
常用在算术运算上以及在for循环中也会用到
1
2
|
A=$((5+3))
B=$(($A+4))
|
For语句的形式
1到10循环执行
1
2
3
4
5
6
7
8
9
10
11
|
写法1:
for
I
in
(1..10);
do
done
写法2:
for
I
in
seq
1 10;
do
done
写法3:
for
(( i=1 ; i<=10 ; i++ ));
do
done
|
While语句的形式
1到10循环
1
2
3
4
|
I=1
while
[ $I -
le
10 ];
do
let
I++
done
|
本文转自linuxjavachen 51CTO博客,原文链接:http://blog.51cto.com/littledevil/1875711,如需转载请自行联系原作者