linux 大中括号变量解读
Linux中的小括号和大括号,${}/$()/()/{}/${var:-string}/${var:=string}/${var:+string}/${var:?string}/${var%pattern}/${var#pattern}/${var%%pattern}/${var##pattern}
简单记录一下大小括号在Linux中的用处。
1、${var},这是Linux中变量的原形。所以$var,别忘记了你的本来面目。

# a=10
# echo $a
10
# echo ${a}
10
# echo ${a}b
10b

2、$(command)与`command`效果相同,意为用command命令执行得到的标准输出来替换$(command)。
# echo $(ls)
temp1 temp2
#echo `ls`
temp1 temp2
3、()与{}两者都是用来执行一串命令的。但是有区别的哦
#两者都是用;来分隔命令的
# (a=abc;echo $a;)
abc
# { a=abc;echo $a;)
abc
#{}左括号{后面要跟空格,()就不用了。
# {a=abc;echo $a;}
-bash: syntax error near unexpected token `}'
#()最后一个命令可以不带;,但是{}强制带;。
#()会在当前shell基础上开一个子shell进程来运行命令,但是{}是在当前shell直接运行命令。()新开一个子进程的时候,是会继承当前shell的环境的,但是在子进程任何操作是不会影响父进程(当前shell进程)的。

# a=abc
# echo $a
abc
# (echo $a)
abc
# (a=123; echo $a;)
123
# echo $a
abc # a=abc
# { a=123;echo $a;}
123
# echo $a
123 #{}是当前进程下运行命令,所以a=123对当前的$a生效了。

4、${var:-string}/${var:=string}/${var:+string}/${var:?string}
现在知道上面提到的{为什么后面要带空格了吧,因为{还有其他用途的。
简单说明一下:
${var:-string} -- 如果${var}为空,用string替换${var:-string},否则使用${var}替换
${var:=string} -- 如果${var}为空,用string替换${var:=string},并且${var}赋值为string,否则同上
${var:+string} -- 如果${var}不为空,则用string替换${var:+string},否则同上(也就是空)
${var:?string} -- 如果${var}为空,报错并退出程序(命令。。。),否则${var}替换${var:?string}
5、${var%pattern}/${var#pattern}/${var%%pattern}/${var##pattern}
% : 从后向前匹配
# :从前向后匹配
%% 和##:最长匹配,相对的%/#表示最短匹配,不过,这个只有在pattern含有通配符是才有效。
通配符:*匹配0或多个任意字符,?匹配0或1个任意字符,[...]匹配,[]里任意一个字符,[^...]匹配任意不在[^]里的任意一个字符。

# a=aabbccddee
# echo ${a%e}
aabbccdde
# echo ${a%%e}
aabbccdde #没有通配符,与%一个样
# echo ${a%e*}
aabbccdde
# echo ${a%%e*}
aabbccdd

6、$((exp)),扩展运算

# echo $((1+2))
3
# a=1
# echo $((a+2)
3

linux 大中括号变量解读的更多相关文章
- linux中shell变量$#,$@,$0,$1,$2的含义
linux中shell变量$#,$@,$0,$1,$2的含义解释: 变量说明: $$ Shell本身的PID(ProcessID) $! Shell最后运行的后台Process的PID $? 最后运行 ...
- linux中shell变量$#,$@,$0,$1,$2的含义解释
linux中shell变量$#,$@,$0,$1,$2的含义解释: 变量说明: $$ Shell本身的PID(ProcessID) $! Shell最后运行的后台Process的PID $? 最后运行 ...
- Linux中环境变量文件及配置
Linux中环境变量文件及配置 一.环境变量文件介绍 转自:http://blog.csdn.net/cscmaker/article/details/7261921 Linux中环境变量包括系统 ...
- Linux SHELL,环境变量
SHELL: 在计算机科学中,Shell俗称壳(用来区别于核),是指"提供使用者使用界面"的软件(命令解析器).它类似于DOS下的command和后来的cmd.exe.它接收用户命 ...
- Linux设置环境变量小结:设置永久变量&临时变量 全局变量&局部变量
1.总结背景 在linux系统下,如果你下载并安装了应用程序,很有可能在键入它的名称时出现“command not found”的提示内容.如果每次都到安装目标文件夹内,找到可执行文件来进行操作就太繁 ...
- Linux中环境变量文件及配置(转载)
一.环境变量文件介绍 转自:http://blog.csdn.net/cscmaker/article/details/7261921 Linux中环境变量包括系统级和用户级,系统级的环境变量是每个登 ...
- linux中shell变量$#,$@,$0,$1,$2的含义解释
linux中shell变量$#,$@,$0,$1,$2的含义解释 linux中shell变量$#,$@,$0,$1,$2的含义解释: 变量说明: $$ Shell本身的PID(ProcessID ...
- Linux用户环境变量
Linux用户环境变量 环境变量就是系统或软件设置的一些参数,用户环境变量就是用户登录系统后,都有自已专用的运行环境.在Windows系统中用户环境变量保存在用户家目录,Linux也是同样的.本文主要 ...
- Linux 管理环境变量的文件分为系统级和用户级别
Linux 管理环境变量的文件分为系统级和用户级别 管理环境变量的文件也分为系统级和用户级别: 1.系统级:/etc/profile:该文件是用户登录时,操作系统定制用户环境时使用的第一个文件,应用于 ...
随机推荐
- [Bzoj3252]攻略(dfs序+线段树)
Description 题目链接 Solution 可以想到,每次肯定是拿最大价值为最优 考虑改变树上一个点的值,只会影响它的子树,也就是dfs序上的一个区间, 于是可以以dfs序建线段树,这样就变成 ...
- python向多个邮箱发邮件--注意接收是垃圾邮件
群发邮件注意:三处标红的地方 # -*- coding: UTF-8 -*- import smtplib from email.mime.text import MIMEText from emai ...
- videomon 环境搭建
1.安装ACE-5.8.0.tar.bz2 tar -zxvf ACE-.tar.bz2 cd ACE_wrappers/mkdir buildcd build../configuremake &am ...
- vlc 编译
一.有用的网址: https://forum.videolan.org/search.php 二.只编译Java apk部分: source env.shmake distcleanmake -e 编 ...
- ios在tableview里面加subview后在ip4和ip5上显示不一样的问题
文章链接:http://quke.org/post/ios-tableview-addsubview-height.html (转载时请注明本文出处及文章链接) 我在在tableview里面加subv ...
- github+git提交 基础用法
git版本管理基本用法: 安装就不用说了 随便一搜 安装完 妥妥的.下边说的是在github从新建一个项目开始: 1.首先打开自己的github地址,如下图所示 点加号 选 New repositor ...
- CentOS6/7-防火墙管理
#CentOS6 #开放端口运行外部访问(不指定源IP) iptables -I INPUT -p tcp --dport -j ACCEPT iptables -I INPUT -p tcp --d ...
- protobuf-net与FlatBuffers
protobuf-net Protobuf是google开源的一个项目,用户数据序列化反序列化,google声称google的数据通信都是用该序列化方法.它比xml格式要少的多,甚至比二进制数据格式也 ...
- java初学2
1.数组操作类Arrays与System public static void arraycopy(Object src, int srcPos, Object dest,int destPos,in ...
- HDU 4262 Juggler 树状数组
将每个球按输入顺序编号,建立 它第几个被扔掉->编号 的映射关系. 记录当前在手里的球的编号,按扔掉的顺序查找这个球的编号,看看这个球是逆时针转到手里更近还是顺时针转到手里更近,即当前扔掉球的编 ...