Chinaunix首页 | 论坛 | 博客
  • 博客访问: 99116
  • 博文数量: 78
  • 博客积分: 2522
  • 博客等级: 少校
  • 技术积分: 410
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-05 16:23
文章分类

全部博文(78)

文章存档

2010年(78)

我的朋友

分类:

2010-05-07 19:49:02

()
在子shell中运行
(a=1);echo $a,结果是空,因为a=1不是在当前shell中运行的(a=1);(echo $a)也是空的。不在同一个子shell中
数组的赋值,见最后的补充
(())
表达式计算
a=1;((a++)); echo $a,这时a就是2了。
<()和>()
进程代入,可以把命令的执行结果当成文件一样读入
比如comm前一 般需要sort,那就可以这样comm <(sort 1.lst) <(sort 2.lst)
或者是paste <(cut -t2 file1) <(cut -t1 file1)
,和管道差不多,但是支持多个输入。
$()
$(cmd) 执行cmd的结果,比如cmd是echo ls,那么就是执行ls,比如file $(which bash),which bash的结果是/bin/bash,所以file $(which bash)等于file /bin/bash。如果你$(ls),而且你的当前目录下只有a b两个文件,那么就是执行a b,然后系统会提示,命令没找到。
$(())
表 达式扩展,和(())很相似,但是这个是有点不同,$(())不能直接$((b++)),b=1;echo $((++b))这时b等于2,显示的也是2,b=1;echo $((b++))这时b等于2,显示的是1.
[]和[[]]
[]就是 test,[]和[[]]都是条件表达式,不过[[]]有比[]高的容错性,如果a为空,那么[ $a -eq 0 ]会报错,但是[[ $a -eq 0 ]]不会,所以一般都会使用[[]]或者是[ "$a" -eq 0 ],[[]]支持的功能也比[]多,比如[[ aaa =~ a{3} ]],
[] 还有一种用途,如果你的当前目录下有a1-a9九个文件,你可以用a[1-9]来替代这九个文件。有点需要注意,你不能用a[1-20]来代替a1- a20,必须要a[1-9] a1[0-9] a20。
$[]
$(())的过去形式,现在已经不建议使用
{}
{1..30} 就是1-30,或者是/{,s}bin/表示/bin/和/sbin/,ab{c,d,e}表示abc、abd、abe
${}
变量,用法 很多,可以查看man bash。
先写这些,以后想到再补充吧。
补充:()同时也是数组的赋值,比如a=(1 3 5),那么${a[0]}=1;${a[1]}=3;${a[2]}=5,需要注意的是,下标是从0开始的。

该文章为本人原创,首发 LUPA社区 http://www.lupaworld.com/home/space-980-do-blog-id-139254.html

阅读(332) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~