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 大中括号变量解读的更多相关文章

  1. linux中shell变量$#,$@,$0,$1,$2的含义

    linux中shell变量$#,$@,$0,$1,$2的含义解释: 变量说明: $$ Shell本身的PID(ProcessID) $! Shell最后运行的后台Process的PID $? 最后运行 ...

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

    linux中shell变量$#,$@,$0,$1,$2的含义解释: 变量说明: $$ Shell本身的PID(ProcessID) $! Shell最后运行的后台Process的PID $? 最后运行 ...

  3. Linux中环境变量文件及配置

    Linux中环境变量文件及配置   一.环境变量文件介绍 转自:http://blog.csdn.net/cscmaker/article/details/7261921 Linux中环境变量包括系统 ...

  4. Linux SHELL,环境变量

    SHELL: 在计算机科学中,Shell俗称壳(用来区别于核),是指"提供使用者使用界面"的软件(命令解析器).它类似于DOS下的command和后来的cmd.exe.它接收用户命 ...

  5. Linux设置环境变量小结:设置永久变量&临时变量 全局变量&局部变量

    1.总结背景 在linux系统下,如果你下载并安装了应用程序,很有可能在键入它的名称时出现“command not found”的提示内容.如果每次都到安装目标文件夹内,找到可执行文件来进行操作就太繁 ...

  6. Linux中环境变量文件及配置(转载)

    一.环境变量文件介绍 转自:http://blog.csdn.net/cscmaker/article/details/7261921 Linux中环境变量包括系统级和用户级,系统级的环境变量是每个登 ...

  7. linux中shell变量$#,$@,$0,$1,$2的含义解释

    linux中shell变量$#,$@,$0,$1,$2的含义解释 linux中shell变量$#,$@,$0,$1,$2的含义解释:  变量说明:  $$  Shell本身的PID(ProcessID ...

  8. Linux用户环境变量

    Linux用户环境变量 环境变量就是系统或软件设置的一些参数,用户环境变量就是用户登录系统后,都有自已专用的运行环境.在Windows系统中用户环境变量保存在用户家目录,Linux也是同样的.本文主要 ...

  9. Linux 管理环境变量的文件分为系统级和用户级别

    Linux 管理环境变量的文件分为系统级和用户级别 管理环境变量的文件也分为系统级和用户级别: 1.系统级:/etc/profile:该文件是用户登录时,操作系统定制用户环境时使用的第一个文件,应用于 ...

随机推荐

  1. 史上最强大的wordpress后台框架redux-framework安装及使用

    redux-framework的相关链接 Redux的官方网站:https://reduxframework.com/ Redux文档查询:https://docs.reduxframework.co ...

  2. Java石头剪刀布小游戏

    package com.neusoft.test; import java.awt.BorderLayout; import java.awt.Choice; import java.awt.Colo ...

  3. python文件,字符串,二进制的读写

    读文件: f = open('/Users/michael/test.txt', 'r') #一次读取文件的全部内容 f.read() #文件使用完毕后必须关闭,因为文件对象会占用操作系统的资源,并且 ...

  4. spark streaming的应用

    今天我们讲spark streaming的应用,这个是实时处理的,类似于Storm以及Flink相关的知识点, 说来也巧,今天的自己也去听了关于Flink的相关的讲座,可惜自己没有听得特别清楚,好像是 ...

  5. 9.3centos7安装python3 以及tab补全功能

    1.安装python3 1.1下载python源码包 网址:https://www.python.org/downloads/release/python-362/ 下载地址:https://www. ...

  6. web.py上传文件并解压

    有个需求是从php端上传zip文件到python端并且解压到指定目录,以下是解决方法 1.python端,使用的web.py def POST(self): post_data = web.input ...

  7. 基于vue 2.X和高德地图的vue-amap组件获取经纬度

    今天我就讲了一下怎么通过vue和高德地图开发的vue-amap组件来获取经纬度. 这是vue-amap的官网文档:https://elemefe.github.io/vue-amap/#/ 这是我的码 ...

  8. HA集群基本概念详解

    一.高可用集群的定义 二.高可用集群的衡量标准 三.高可用集群的层次结构 四.高可用集群的分类 五.高可用集群常用软件 六.共享存储 七.集群文件系统与集群LVM 八.高可用集群的工作原理 一.高可用 ...

  9. heat应用

    作为OpenStack中的编排引擎,Heat能够出色的完成编排任务,井井有条地管理编排出来的资源.但同时,Heat也是一个出色的应用部署引擎,它提供了一套内置的框架去完成一系列复杂的应用部署任务. 使 ...

  10. 聊聊、Spring WebApplicationInitializer

    说到 WebApplicationInitializer,这个接口是为了实现代码配置 Web 功能.只要实现了这个接口,那么就可以实现 Filter,Servlet,Listener 等配置,跟在 x ...