Bash Shell 里的各种括号
天在 SegmentFault 上看到又有人问起关于Shell里各种括号的问题。对于很多玩Shell的人,括号是个很尴尬的问题,用起来没问题,说起来不明白,我在这里总结一下Bash Shell几种括号的用法和区别,别的Shell我不会。。。
(( )) :一对圆括号有两个地方用到。
1,for循环,
for (( expr1 ; expr2 ; expr3 ))
这里一对双括号里边的表达式,GNU的文档指出,expr1支持 Shell Arithmetic;expr2不为0时,expr3被赋值且语句执行。说的很麻烦,还要花时间搞清楚什么是Shell Arithmetic。其实一言以蔽之,支持数字条件。比如:
for (( a=0 ; a<10 ; a++ )); do echo $a; done
会输出 0 1 2 3 (带换行哦~~~)
2,数学表达
(( )) 和 $(( ))
(( )) 的用法与let一样,就不用多解释了吧~~~
$(( ))就是把计算结果拿出来,可以用在双引号里边,比如:
echo "1+2=$(( 1 + 2 ))"
会输出 1+2=3
( ):一个圆括号
在for循环里,跟C语法一样一样的。
或者是子程序,返回整个里边表达的返回值。里边的变量都是局部的,修改不会带到外边。举例子
a=1
(a=3; echo $a)
echo a
结果是 3 1
还有个就是圈数组。。。这个就没神马意思了
[ ]:一个方括号,是bash的命令,查man手册是可以查到的,跟test一样,在手册里可以看到很多用法。比如-b -c -gt -eq 什么的很多,还有用-a表示与,-o表示或等等
[[ ]]:一对方括号是一个方括号的加强版,则是Shell的保留字,里边支持了 || && 等等这些符号。一般我喜欢用这个
还有相对复杂的 { }
几个用处,区分变量,如:
var=abcd; echo ${var}EFG;
这样,Bash就不会认为变量是varEFG了
还有用来截取字符串的 ${ }语法比较灵活多变,这里不做多解释,大家有兴趣可以自己去搜搜资料,一般我脚本用到的字符串处理,这个都能搞定了。
代码块。用来区分代码的,但是跟( )有个区别,就是在末尾要加上 ;
目前看到常用的用法也就是这样,肯定不全,欢迎补充,欢迎交流。
Bash Shell 里的各种括号的更多相关文章
- shell脚本学习之Bash shell 里各种括号的用法
今天在 SegmentFault 上看到又有人问起关于Shell里各种括号的问题.对于很多玩Shell的人,括号是个很尴尬的问题,用起来没问题,说起来不明白,我在这里总结一下Bash Shell几种括 ...
- shell -- 大括号和小括号
在这里我想说的是几种shell里的小括号,大括号结构和有括号的变量,命令的用法,如下: 1.${var} 2.$(cmd) 3.()和{} 4.${var:-string},${var:+string ...
- [Bash Shell] Shell学习笔记
1. Shell简介 Shell本身是一个用C语言编写的程序,它是用户使用Unix/Linux的桥梁,用户的大部分工作都是通过Shell完成的.Shell既是一种命令语言,又是一种程序设计语言.作为命 ...
- Linux Shell——bash shell 脚本简介
bash shell 脚本简介 shell 运行环境 如果你运行的是 Unix 或 Linux 系统,例如 Ubuntu,Red Hat,SUSE Linux,还有macOS,都是内置了 bash s ...
- [转帖][Bash Shell] Shell学习笔记
[Bash Shell] Shell学习笔记 http://www.cnblogs.com/maybe2030/p/5022595.html 阅读目录 编译型语言 解释型语言 5.1 作为可执行程序 ...
- Bash Shell (十一)
[教程主题]:Bash Shell [课程录制]: 创E [主要内容] [1] Hello World! 几乎所有的讲解编程的书给读者的第一个例子都是 Hello World 程序,那么我们今天也就从 ...
- bash shell
Linux的shell 与windows只有一种批处理脚本不同,由于早年的Unix年代,发展者众,出现了各种不同的distribution,因此也随着不同的distribution出现了各自的shel ...
- bash shell命令(2)
在上篇<bash shell命令(1)>中,介绍了几种简单的linux shell命令,今天继续介绍bash shell命令 本文地址:http://www.cnblogs.com/arc ...
- linux BASH shell设置字体与背景颜色
linux BASH shell下设置字体及背景颜色的方法. BASH shell下设置字体及背景颜色 echo -e "\e[31mtest\e[41m" \e[30m 将字 ...
随机推荐
- 基于jQuery带进度条全屏图片轮播代码
基于jQuery带进度条全屏图片轮播代码.这是一款基于jQuery实现的oppo手机官网首页带进度条全屏图片轮播特效.效果图如下: 在线预览 源码下载 实现的代码. html代码: <div ...
- pdo_mysql安装
如果编译时没有编译pdo模块,可以cd 到php编译时的目录,重新编译 1.切换到pdo_mysql目录,如php-5.5.10/ext/pdo_mysql/ 2.生成configure文件,在pdo ...
- jsonp爬取页面
jsonp Connection conn = Jsoup.connect("http://ip.taobao.com/service/getIpInfo.php?ip=" + i ...
- Winform 加密连接字符串“未能提供RsaProtectedConfigurationProvider加密,对象已存在”的解决方案
当一台机器已安装软件,并有新用户需要使用此软件时提示“未能提供RsaProtectedConfigurationProvider加密,对象已存在”. 这是因为加密模式是用户模式,需要运行以下脚本添加新 ...
- BusyBox inittab
# /etc/inittab init(8) configuration for BusyBox## Copyright (C) 1999-2004 by Erik Andersen <ande ...
- umount 强制卸载
umount -lf /mnt 强制卸载文件 -f Force unmount (in case of an unreachable NFS system). (Requires kern ...
- C#中对 XML节点进行添加,删除,查找和删除操作
从网上整理所得 XMLDocument来操作XML比较简单,虽然有时效率不是很高.代码如下 已知有一个XML文件(bookstore.xml)如下: <?xml version="1. ...
- FFmpeg API变化
可以查看doc目录下的APIchanges和根目录下的Changelog 去掉了ffserver程序 'avcodec_register_all' is deprecated 还有av_regis ...
- Rails NameError uninitialized constant class solution
rails nameerror uninitialized constant class will occur if your rails console is not loaded with con ...
- 关于ajax get方式请求 url地址参数怎么变成空了的问题
如URL地址:http://i.cnblogs.com/EditPosts.aspx?opt=1&value=#sgsgs; 今天在做项目中发现value明明是有值,怎么出在的后台往往取不到 ...