linux中shell的小括号、大括号的用法区别
Linux中小括号()和大括号{}都是对其中的一串命令进行执行,但有一定的区别,其区别如下:
1 小括号()
①命令组。括号中的命令新开一个子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的小括号、大括号的用法区别相关推荐
- shell脚本中的几个括号总结(小括号/大括号/花括号)
[转载]shell脚本中的几个括号总结(小括号/大括号/花括号) (2011-10-08 21:23:34) 转载▼ 标签: 杂谈 分类: linux shell脚本中的几个括号总结(小括号/大括号/ ...
- Linux脚本 括号,linux shell取小括号()、中括号[]、大括号{}等里的内容
linux shell取小括号()之内的内容 [root@localhost ~]# var="aaa(boot)bbbsdl(grub)fjjkdsjk(good)aadsff" ...
- Linux中shell的分类以及查看当前的shell
DOS/Windows 与 Linux 的最重要的区别之一是 Linux 的命令 shell 是与操作系统相分离的一层. 目前流行的shell有ash.bash.ksh.csh.zsh,如下介绍: b ...
- linux中sh+$0,浅谈linux中shell变量$#,$@,$0,$1,$2的含义解释
摘抄自:ABS_GUIDE 下载地址:http://www.tldp.org/LDP/abs/abs-guide.pdf linux中shell变量$#,$@,$0,$1,$2的含义解释: 变量说明: ...
- linux+管道+分段,Linux中shell基础、重定向、管道符、环境变量
原标题:Linux中shell基础.重定向.管道符.环境变量 1.什么是shell Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口(命令解释器).它接收用户输入的命令并把它送入内核 ...
- linux下变量名长度,Linux中shell的变量介绍
Linux中shell的变量介绍 发布时间:2020-06-24 16:20:39 来源:亿速云 阅读:112 作者:元一 这期内容当中的小编将会给大家带来有关Linux中shell的变量介绍,以专业 ...
- Linux中shell提示符定制
Linux中shell提示符定制 如果您很容易使 shell 提示行变得色彩绚烂斓且带有更多信息,为什么还要坚持用单调的标准 shell 提示行呢?在这篇技巧中,Daniel Robbins 将说 ...
- 浅谈linux中shell变量$#,$@,$0,$1,$2,$?的含义解释
浅谈linux中shell变量$#,$@,$0,$1,$2,$?的含义解释 下面小编就为大家带来一篇浅谈linux中shell变量$#,$@,$0,$1,$2的含义解释.小编觉得挺不错的,现在就分享给 ...
- Linux中 shell 脚本获取当前工作目录的方法
Linux中 shell 脚本获取当前工作目录的方法 1. 示例 2. 注意: 参考: 1. 示例 test.sh target_dir=$(cd $(dirname $0); pwd) echo $ ...
最新文章
- 字符在utf-8,gbk,gb2312,iso8859-1下的编码实验
- Python 技术篇-使用pygame库实现音乐播放实例演示,带漂亮小界面!
- ListView使用技巧-更新中
- 服务器微信了早上好,微信问候语早上好 微信早上好经典问候语
- C++ 可以把变量当成函数用~~
- threejs获取模型坐标_Threejs倒影实现解析
- android中dip、dp、px、sp和屏幕密度
- linux文件系统的总体架构,Linux NFS的整体架构与核心代码解析
- 编写hive udf函数
- Java 8新特性探究(十一)Base64详解
- mysql 视频教程下载_最全138节Mysql数据库+PHP零基础到精通视频教程【云盘下载】...
- 电梯轿厢场景下的电动车数据集
- grammarly word安装失败
- Arctime——可视化字幕编辑器,解放你的双手
- ERNIE(二妮儿)模型初探
- 四路组相联原理_计算机组成原理中是如何求是几路组相联映像?
- 【案例练习】17个华丽的UI效果的实现 ,激发你的创造灵感
- 深度学习中的IoU概念理解
- apex 安装/使用 记录
- java基础入门篇(1)