Shell里面括号的用法

简介:

中括号

中括号分为单中括号[],和双中括号[[]],中括号一般用于表达式判断中,小括号也可以用于表达式,这个后面提到。

单中括号[]

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  in  (1..10); do
done
 
写法2:
for  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,如需转载请自行联系原作者




相关文章
|
15小时前
|
存储 运维 Shell
shell中for while until 三种循环的用法
shell编程中,有几种常见的循环结构,包括for循环、while循环和until循环,总的来说,循环shell编程中扮演着至关重要的角色,它们使得自动化任务变得更加容易,提高了效率,并且可以处理各种各样的编程需求。
254 13
shell中for while until 三种循环的用法
|
7月前
|
存储 Shell Linux
Shell 编程:探索 Shell 的基本概念与用法
Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。 Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。 Shell 脚本(shell script),是一种为 shell 编写的脚本程序,shell 和 shell script 是两个不同的概念。
87 0
|
7月前
|
监控 Shell Linux
Linux Shell高级用法:优化和自动化你的工作流程
Linux Shell是一个非常强大的工具,可以用于自动化任务、处理文本和数据、进行系统管理等。在这篇文章中,我们将介绍一些Linux Shell的高级用法,帮助你更高效地利用Shell完成各种任务。
107 0
|
15小时前
|
Shell Perl
shell学习(九) 【shell sed用法】
shell学习(九) 【shell sed用法】
13 0
|
15小时前
|
Shell C语言 C++
【Shell 编程指南】shell中的(),{}几种语法用法
【Shell 编程指南】shell中的(),{}几种语法用法
20 0
|
15小时前
|
Shell
shell脚本for循环复杂用法
shell脚本for循环复杂用法
51 5
|
15小时前
|
存储 Shell Linux
Linux的shell命令——变量用法
Linux的shell命令——变量用法
34 0
|
9月前
|
运维 Shell Python
【运维知识高级篇】超详细的Shell编程讲解2(变量切片+统计变量长度+字串删除+字串替换+七种方法进行数值运算+整数比较+多整数比较+文件判断+字符串比对+正则比对+配合三剑客的高阶用法)(一)
【运维知识高级篇】超详细的Shell编程讲解2(变量切片+统计变量长度+字串删除+字串替换+七种方法进行数值运算+整数比较+多整数比较+文件判断+字符串比对+正则比对+配合三剑客的高阶用法)
94 0
|
15小时前
|
Shell Linux
linux|shell编程|shell脚本的一些高级技巧(shell脚本内的括号,中括号,花括号,逻辑判断,脚本优雅退出等等)
linux|shell编程|shell脚本的一些高级技巧(shell脚本内的括号,中括号,花括号,逻辑判断,脚本优雅退出等等)
54 0
|
5月前
|
Shell BI PHP
shell中的各种括号的使用方法
shell中的各种括号的使用方法
45 0