Linux中小括号()和大括号{}都是对其中的一串命令进行执行,但有一定的区别,其区别如下:

1 小括号()

①命令组。括号中的命令新开一个子shell程序,括号中的变量为本地变量 ,不能够在脚本其他部分使用。括号中多个命令之间用分号隔开。

备注:
在括号中的变量,由于是在子shell中,所以对于脚本剩下的部分是不可用的.

父进程, 也就是脚本本身, 将不能够读取在子进程中创建的变量, 也就是在子shell中创建的变量.
(cmd1;cmd2;cmd3)

②命令替换。命令替换$(cmd)等同于`cmd`(这不是单引号,`是ESC下面的那个键) ,shell执行过程中发现了$(cmd)结构,便将$(cmd)中的cmd执行一次,得到其输出,再将此输出放到原来命令。例如:

[root@localhost tmp]# ls

fstab  functions  hellobash  issue  mytestdir  scripts

[root@localhost tmp]# echo $(ls)

fstab functions hellobash issue mytestdir scripts

[root@localhost tmp]# echo `ls`

fstab functions hellobash issue mytestdir scripts

[root@localhost tmp]#

③用于初始化数组。如:arr=(m n)


2 大括号

①拓展。对大括号中的文件名做扩展。在大括号中,不允许有空白,除非这个空白被引用或转义。拓展分为普通以逗号(,)进行拓展,如echo {a,b}.txt将间隔的各项内容均列出;已两个点(..)进行拓展,如echo {1..5}.txt自动补全1到5中间内容。

[root@localhost ~]# echo {a,b}.txt

a.txt b.txt

[root@localhost ~]# echo {1..5}.txt

1.txt 2.txt 3.txt 4.txt 5.txt

[root@localhost ~]#

②内部组 。与小括号中的命令不同,大括号内的命令在当前shell运行,不会重新开子shell。

括号内的命令间用分号隔开,最后一个命令后必须跟分号。{}的第一个命令和左括号之间必须要有一个空格。

3 (( ))
  
(( ... ))结构可以用来计算并测试算术表达式的结果. 退出状态将会与[ ... ]结构完全相反!还可应用到c风格的for,while循环语句,(( )) 中,所有的变量(加不加$无所谓)都是数值。

$((...))结构的表达式是C风格的表达式,其返回的结果是表达式值,其中变量引用可不用‘$’(当然也可以)

for((...;...;...))
do
  cmd
done

while ((...))
do
  cmd
done

比较操作符

<

小于

(("$a" < "$b"))
<=

小于等于

(("$a" <= "$b"))
>

大于

(("$a" > "$b"))
>=

大于等于

(("$a" >= "$b"))

(( 0 ))
echo "Exit status of `(( 0 ))` is $?."         # 1
   
(( 1 ))
echo "Exit status of `(( 1 ))` is $?."         # 0

(( 5 > 4 ))                                      # 真
echo "Exit status of `(( 5 > 4 ))` is $?."     # 0

(( 5 > 9 ))                                      # 假
echo "Exit status of `(( 5 > 9 ))` is $?."     # 1

(( 5 - 5 ))                                      # 0
echo "Exit status of `(( 5 - 5 ))` is $?."     # 1

(( 5 / 4 ))                                      # 除法也可以.
echo "Exit status of `(( 5 / 4 ))` is $?."     # 0

(( 1 / 2 ))                                      # 除法的计算结果 < 1.
echo "Exit status of `(( 1 / 2 ))` is $?."     # 截取之后的结果为 0.
                                                  # 1
or ((a=1; a <= LIMIT ; a++))  # 双圆括号, 并且"LIMIT"变量前面没有"$".
do
   echo -n "$a "
done

while (( a <= LIMIT ))   # 双圆括号, 变量前边没有"$".
do
   echo -n "$a "
   ((a += 1))   # let "a+=1"
done

a=2
b=$(($a*4))     #a=2 b=8
c=$((a*3))      #a=2 c=6

总结:

()会开启一个新的子shell,{}不会开启一个新的子shell

(())常用于算术运算比较,[[]]常用于字符串的比较.

$()返回括号中命令执行的结果

$(())返回的结果是括号中表达式值

${ }参数替换与扩展

本文转自:

http://blog.csdn.net/damotiansheng/article/details/44196769

https://jingyan.baidu.com/article/676629977eddbb54d41b8454.html

linux中shell的小括号、大括号的用法区别相关推荐

  1. shell脚本中的几个括号总结(小括号/大括号/花括号)

    [转载]shell脚本中的几个括号总结(小括号/大括号/花括号) (2011-10-08 21:23:34) 转载▼ 标签: 杂谈 分类: linux shell脚本中的几个括号总结(小括号/大括号/ ...

  2. Linux脚本 括号,linux shell取小括号()、中括号[]、大括号{}等里的内容

    linux shell取小括号()之内的内容 [root@localhost ~]# var="aaa(boot)bbbsdl(grub)fjjkdsjk(good)aadsff" ...

  3. Linux中shell的分类以及查看当前的shell

    DOS/Windows 与 Linux 的最重要的区别之一是 Linux 的命令 shell 是与操作系统相分离的一层. 目前流行的shell有ash.bash.ksh.csh.zsh,如下介绍: b ...

  4. linux中sh+$0,浅谈linux中shell变量$#,$@,$0,$1,$2的含义解释

    摘抄自:ABS_GUIDE 下载地址:http://www.tldp.org/LDP/abs/abs-guide.pdf linux中shell变量$#,$@,$0,$1,$2的含义解释: 变量说明: ...

  5. linux+管道+分段,Linux中shell基础、重定向、管道符、环境变量

    原标题:Linux中shell基础.重定向.管道符.环境变量 1.什么是shell Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口(命令解释器).它接收用户输入的命令并把它送入内核 ...

  6. linux下变量名长度,Linux中shell的变量介绍

    Linux中shell的变量介绍 发布时间:2020-06-24 16:20:39 来源:亿速云 阅读:112 作者:元一 这期内容当中的小编将会给大家带来有关Linux中shell的变量介绍,以专业 ...

  7. Linux中shell提示符定制

    Linux中shell提示符定制   如果您很容易使 shell 提示行变得色彩绚烂斓且带有更多信息,为什么还要坚持用单调的标准 shell 提示行呢?在这篇技巧中,Daniel Robbins 将说 ...

  8. 浅谈linux中shell变量$#,$@,$0,$1,$2,$?的含义解释

    浅谈linux中shell变量$#,$@,$0,$1,$2,$?的含义解释 下面小编就为大家带来一篇浅谈linux中shell变量$#,$@,$0,$1,$2的含义解释.小编觉得挺不错的,现在就分享给 ...

  9. Linux中 shell 脚本获取当前工作目录的方法

    Linux中 shell 脚本获取当前工作目录的方法 1. 示例 2. 注意: 参考: 1. 示例 test.sh target_dir=$(cd $(dirname $0); pwd) echo $ ...

最新文章

  1. 字符在utf-8,gbk,gb2312,iso8859-1下的编码实验
  2. Python 技术篇-使用pygame库实现音乐播放实例演示,带漂亮小界面!
  3. ListView使用技巧-更新中
  4. 服务器微信了早上好,微信问候语早上好 微信早上好经典问候语
  5. C++ 可以把变量当成函数用~~
  6. threejs获取模型坐标_Threejs倒影实现解析
  7. android中dip、dp、px、sp和屏幕密度
  8. linux文件系统的总体架构,Linux NFS的整体架构与核心代码解析
  9. 编写hive udf函数
  10. Java 8新特性探究(十一)Base64详解
  11. mysql 视频教程下载_最全138节Mysql数据库+PHP零基础到精通视频教程【云盘下载】...
  12. 电梯轿厢场景下的电动车数据集
  13. grammarly word安装失败
  14. Arctime——可视化字幕编辑器,解放你的双手
  15. ERNIE(二妮儿)模型初探
  16. 四路组相联原理_计算机组成原理中是如何求是几路组相联映像?
  17. 【案例练习】17个华丽的UI效果的实现 ,激发你的创造灵感
  18. 深度学习中的IoU概念理解
  19. apex 安装/使用 记录
  20. java基础入门篇(1)

热门文章

  1. 苹果系统微信实况图照片发送-竞品分析初步思考
  2. 公众号头条文章数据接口 API
  3. 少儿思维能力培养受重视 掌门少儿优质课程产品广获家长青睐
  4. 双排四点接触球转盘轴承的有限元分析
  5. 农村信用社招聘计算机类进去干啥,2008年山东农村信用社招聘考试计算机类的范围有知道的吗?...
  6. VM虚拟机安装CentOS系统的常见BUG
  7. 【hadoop权威指南第四版】第三章hadoop分布式文件系统【笔记+代码】
  8. 可视化IDE低代码开发平台
  9. c语言程序设计 学籍,c语言学籍信息管理系统设计
  10. 上善若水 (9月18日)