bash的展开功能简要
时间:2008-04-01 来源:jaffaz
bash提供了7种展开功能,分别是(按展开执行顺序):括号展开,波号展开,变量展开,算术展开,命令替换,字分割和路径名展开。
括号展开
括号展开有两种形式:
a{b,c,d}e --> abe ace ade
a{b..d}e --> abe ace ade
括号展开还可以嵌套使用:
1{aa,b{c,d}}2 --> 1aa2 1bc2 1bd2
波号展开
波号展开后相当于指定用户的主目录路径(假设当前登录用户为user)
~ --> /home/user
~root --> /root
变量展开
假设有变量x:
x="Hello World"
那么
$x --> Hello World
${x} --> Hello World
$xasdf --> 替换为名为xasdf的变量的值,假如没有定义,留空
${x}asdf --> Hello Worldasdf
算术展开
算术展开的一般形式:
$((expression))
可以在算术展开里面进行数学运算:
$((100 + 9)) --> 109
命令替换
命令替换的一般形式:
$(cmd)
`cmd`
如:
$(echo asdf) --> asdf
字分割
若变量展开、算术展开、命令替换没有用双引号括起来,bash会对其进行字分割:
x="Hello World",展开后得到两个词:"Hello", "World"
$x --> Hello World
路径名展开
用于匹配文件系统中存在的文件名
* 匹配任意串,包括空串
? 匹配任意一个字符
[...] 匹配[]中的任意一个字符
[!...]
[^...] 不匹配[!], [^...]中的任意一个字符
进程替换
进程替换需要系统支持fifo文件
一般形式为:
>(list) 替换为list的标准输入文件名,往该文件写入数据可以让list从标准输入中读取得到
<(list) 替换为list的标准输出文件名,可以读取这个文件得到list的标准输出
括号展开
括号展开有两种形式:
a{b,c,d}e --> abe ace ade
a{b..d}e --> abe ace ade
括号展开还可以嵌套使用:
1{aa,b{c,d}}2 --> 1aa2 1bc2 1bd2
波号展开
波号展开后相当于指定用户的主目录路径(假设当前登录用户为user)
~ --> /home/user
~root --> /root
变量展开
假设有变量x:
x="Hello World"
那么
$x --> Hello World
${x} --> Hello World
$xasdf --> 替换为名为xasdf的变量的值,假如没有定义,留空
${x}asdf --> Hello Worldasdf
算术展开
算术展开的一般形式:
$((expression))
可以在算术展开里面进行数学运算:
$((100 + 9)) --> 109
命令替换
命令替换的一般形式:
$(cmd)
`cmd`
如:
$(echo asdf) --> asdf
字分割
若变量展开、算术展开、命令替换没有用双引号括起来,bash会对其进行字分割:
x="Hello World",展开后得到两个词:"Hello", "World"
$x --> Hello World
路径名展开
用于匹配文件系统中存在的文件名
* 匹配任意串,包括空串
? 匹配任意一个字符
[...] 匹配[]中的任意一个字符
[!...]
[^...] 不匹配[!], [^...]中的任意一个字符
进程替换
进程替换需要系统支持fifo文件
一般形式为:
>(list) 替换为list的标准输入文件名,往该文件写入数据可以让list从标准输入中读取得到
<(list) 替换为list的标准输出文件名,可以读取这个文件得到list的标准输出
相关阅读 更多 +