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. 正则表达式re.S的用法

    正则表达式re.S的用法 在Python的正则表达式中,有一个参数为re.S.它表示"."(不包含外侧双引号,下同)的作用扩展到整个字符串,包括"\n".看如下 ...

  2. C# Newtonsoft.Json 解析多嵌套json 进行反序列化

    [ { ", "time": "2016-09-09 12:23:33", ", "freeShipping": tru ...

  3. php 删除指定扩展名文件

    <?php /** *@param $path文件夹绝对路径 $file_type待删除文件的后缀名 *return void */ function clearn_file($path, $f ...

  4. 树上dfs+思维

    #include<cstdio> ; int cnt,head[N],n; int size[N],num[N]; void init() { cnt = ; ;i<N;i++) h ...

  5. 在庫購買管理(MM)

    ■購買管理■ [購買依頼]ME51N: 登録ME52N: 変更ME53N: 照会 [購買発注]ME21N: 登録ME22N: 変更ME23N: 照会 [見積依頼]ME41: 登録ME42: 変更ME4 ...

  6. spark练习--mysql的读取

    前面我们一直操作的是,通过一个文件来读取数据,这个里面不涉及数据相关的只是,今天我们来介绍一下spark操作中存放与读取 1.首先我们先介绍的是把数据存放进入mysql中,今天介绍的这个例子是我们前两 ...

  7. Android 懒加载简单介绍

    1.懒加载介绍 1.1.效果预览 1.2.效果讲解 当页面可见的时候,才加载当前页面. 没有打开的页面,就不会预加载. 说白了,懒加载就是可见的时候才去请求数据. 1.3.懒加载文章传送门 参考文章: ...

  8. 关于 JS 模块化的最佳实践总结

    模块化开发是 JS 项目开发中的必备技能,它如同面向对象.设计模式一样,可以兼顾提升软件项目的可维护性和开发效率. 模块之间通常以全局对象维系通讯.在小游戏中,GameGlobal 是全局对象.在小程 ...

  9. Android 布局错乱 Android花屏

    最近做项目,妈的,有个一个很难受的bug. 这个bug ,自己这里没有手机,没有办法复现,找到了手机之后.解决了. 我先给大家看下什么叫布局错乱,花屏: 来张正常的图片: 正常情况下是这样的.然后, ...

  10. python和matlab

    一.python简介 python是一种面向对象的解释型计算机程序设计语言.python是纯粹的自由软件,源代码和解释器CPython遵循GPL协议.Python语法简介清晰,特色之一是强制用空白符作 ...