认识 Shell 脚本里的小括号们——分析“()”与“(())”的区别
2016-12-16 00:00
288 查看
()
的三种用法
①命令组。语法为 (command),其中的命令会在新开的子 Shell 中依次执行。
a=1 (a=2 ; echo $a) echo $a
运行结果为:
2 1
题外话——
()与
{}的区别:
(cmd1 ; cmd2 ; cmd3)是在子 Shell 中顺序执行;
{ cmd1; cmd2; cmd3; }是在当前 Shell 中顺序执行。在括号中的重定向符号只影响特定命令,在括号外的重定向符号影响全部命令。
②命令替换。语法为
$(command),替代传统的 “`command`”,可能有 Shell 不支持。
命令替换是指 Shell 会预先扫描一遍脚本,发现命令替换的结构,将其中的命令执行一次,得到其标准输出,再将此输出放到原来命令替换的位置,执行替换后的脚本。
$()比 “``” 在设计上引入了两点改进:
不再转义其中的
\x
允许嵌套
题外话——
$()与
${}的区别:前者是命令替换,后者是变量替换。
③数组初始化。语法为
arr=(e1 e2 e3)。
(())
的两种用法
①整数扩展。只要符合C语言中的运算规则即可,不支持浮点数!。其中的变量名可以不加
$前缀。
对
for、
while、
if命令进行了扩展,可协同使用。
((expr))结构计算一个算术表达式的值,非 0 视为真,退出状态码 0,0 视为假,退出状态码 1。
$ a=0; ((++a)) && echo True || echo False True $ a=0; ((a++)) && echo True || echo False False
②使用
$((expr))来获取表达式的值,注意这不是命令替换的语法!
a=1 $ echo $((a+1)) 2
相关文章推荐
- 认识 Shell 脚本里的中括号们——分析“[]”与“[[]]”的区别
- shell脚本分析 nginx日志访问次数最多及最耗时的页面(慢查询)
- 利用oprofile分析fortran并用gnuplot画图的shell脚本
- linux执行shell脚本的方式及一些区别
- shell脚本按行读取文本文件,并对读取的行进行分析
- c语言中调用shell脚本返回值问题分析
- shell脚本出错分析
- 一个shell脚本的分析(1)
- hadoop相关启动脚本分析 有助于troubleshoot,顺便学习shell
- shell脚本下的教你如果运用for,while,unti循环,以及区别l
- 第一章 Hadoop启动Shell启动脚本分析--基于hadoop-0.20.2-cdh3u1
- 关于shell unix下,直接执行shell与sh 执行 或加 . 脚本 的区别及含义
- 第一章 Hadoop启动Shell启动脚本分析--基于hadoop-0.20.2-cdh3u1
- linux 执行shell脚本的方式及一些区别
- 第一章 Hadoop启动Shell启动脚本分析--基于hadoop-0.20.2-cdh3u1
- ubuntu下shell脚本运行异常:bash和dash的区别
- shell 脚本中getopt 和 getopts 的区别
- shell脚本分析 nginx日志访问次数最多及最耗时的页面(慢查询)
- 在Linux中用source,dot(.)和直接用脚本文件名执行shell脚本的区别
- Hadoop的shell脚本分析