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. 特殊sql查询方法实例

    一.if条件查询:SELECT sum(if(is_buy > 0 ,1,0)) AS friend_count_all_cj, sum(if(is_buy = 0 ,1,0)) AS frie ...

  2. 手机连上同一个局域网的PC,修改项目的vhost配置

    <VirtualHost 172.16.6.100:80> DocumentRoot "D:\phpStudy\WWW\mywork\many_school" Serv ...

  3. 编辑工具_vi

    vi/vim平时经常会用到,但是一直没有时间系统的整理下,今天看到了一篇不错的介绍文章.引用下,就当做笔记了,但是不晓得该怎么填引用路径,如有侵权请告知,补上引用路径 01. vi 简介 1.1 学习 ...

  4. 关于SSM框架项目中jsp页面EL表达式使用的一些疑问(一)

    问题 ssm框架整合中,jsp页面中EL表达式所引用的对象“page”可以在controller中使用mav.addObject(“page”,pag )进行添加,如果省略mav.addObject( ...

  5. 笔记-爬虫-selenium常用方法

    笔记-爬虫-selenium常用方法 1.      查找元素 常用的查找方法 find_element_by_name find_element_by_xpath find_element_by_l ...

  6. Too many parameters: expected 1, was given 2 Query: SELECT count(id) FROM `user` WHERE username = ?; Parameters: [org.apache.commons.dbutils.handlers.ScalarHandler@453da22c, [李明]]

    public Object getValue(String sql,Object... args) { Connection conn = null; Object obj= null; try { ...

  7. scala Actor -03

    1.对于上一篇讲解的scala的一些补充 val files = Array[String]("a.txt","b.txt","c.txt" ...

  8. ST表学习

    啊谈不上学习了.复习一下原理留一下板子. $f\left[i,j \right]$表示以$i$为起点,区间长度为${2}^{j}$的区间最值.以最小值为例,即 $min\left(a\left [ k ...

  9. 使用Windows SFC和DISM工具来解决服务器OS问题

    TechTarget中国原创] 随着使用时间的越来越多,Windows服务器安装的系统文件可能会被损坏或损毁.管理员一般可以通过系统自带的System File Checker (SFC) 或者更健壮 ...

  10. 《Cracking the Coding Interview》——第13章:C和C++——题目4

    2014-04-25 19:50 题目:深拷贝和浅拷贝有什么区别?如何应用? 解法:深拷贝传值,浅拷贝传引用.java里对此做了限制,而C++里面用起来更自由.大结构不宜传值,因为拷贝过程效率低. 代 ...