#符号详解
() 在子shell中运行
(a=1);echo $a,结果是空,因为a=1不是在当前shell中运行的(a=1);(echo $a)也是空的
小技巧:(cd $path, do something) 可以让不切换当前目录而在其它目录干点别的事儿~
() 还有个功能是数组的赋值:比如a=(1 3 5),那么${a[0]}=1;${a[1]}=3;${a[2]}=5,需要注意的是,下标是从0开始的。 (()) 表达式计算
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|-o] [[ && | || ]]
如果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。
但是需要注意的是 [[]] 数字进制转换的坑~ $[] 是 $(()) 的过去形式,现在已经不建议使用。 {n..m} {1..30} 就是1-30,或者是/{,s}bin/表示/bin/和/sbin/,ab{c,d,e}表示abc、abd、abe,
小技巧:文件备份:cp a.sh{,.bak}
而 { cmd1; cmd2; } 的作用是定义一个命令组,一般用在单行的条件表达式中:
[[ 1 -eq 2 ]] && echo True || { echo False; echo "Program will exit!"; }
其实 shell 函数的语法也是它的变体:
a(){ i=$1; echo $((i++)); echo $((++i)); } && a 1 ${} 变量的Parameter Expansion,
用法很多,最基本的 ${var}1,防止变量扩展冲突,具体可以查看man bash

  

shell符号解释的更多相关文章

  1. linux shell `符号详解

    linux shell `符号详解 <pre>[root@iZ23uewresmZ arjianghu]# echo `ls`asss.html common guaji.php imag ...

  2. shell 符号的定义(一)

    在shell中,在判断数值大小除了可以用”(( ))”的形式外,还可以使用”[ ]”.但是就不能使用>, < , = 这样的符号了,要使用 -lt (小于),-gt (大于),-le (小 ...

  3. Shell符号展开

    字符 展开 * 这个 “*” 字符意味着匹配文件名中的任意字符 shell 把 “*” 展开成了另外的东西 ,在 echo 命令被执行前. ~家目录 算术表达式展开 算术表达式展开使用这种格式: $( ...

  4. shell !符号

    执行某历史命令 history找出历史命令id号 ! id

  5. UML中类图的符号解释

    在UML的定义中,描写叙述类和对象之间的关系,包含下面几种方式:依赖(Dependency).关联(Association).聚合(Aggregation).组合(Composition).泛化(Ge ...

  6. awk 中的难懂符号解释

    awk中NF和NR的意义,其实你已经知道NF和NR的意义了,NF代表的是一个文本文件中一行(一条记录)中的字段个数,NR代表的是这个文本文件的行数(记录数). 看个例子: cal 9 2003 Sep ...

  7. shell符号

    *:  通配符 *.c : c结尾的文件 *v : v结尾的文件 v* : v开头的文件

  8. UML类图符号解释

    在UML类图中,常见的有以下几种关系:  泛化(Generalization)和  实现(Realization) - 父子关系 依赖(Dependency) - 局部变量.方法參数 聚合(Aggre ...

  9. Linux_Shell符号及各种解释对照表

    Shell符号及各种解释对照表: Shell符号 使用方法及说明 # 注释符号(Hashmark[Comments]) 1.在shell文件的行首,作为shebang标记,#!/bin/bash; 2 ...

随机推荐

  1. Spring(三)实例化Bean以及注入对象

    使用xml实例化bean 在xml中实例化bean的三种方式 <bean id="springService" class="com.zhiyou100.crm.t ...

  2. 爬虫3 requests之json 把json数据转化为字典

    #json 将json数据转化为字典,方便操作数据 res = requests.get('http://httpbin.org/get') print(res.json()) #res.json() ...

  3. Java中的不同遍历方式

    已知一个Person类: public class Person implements Comparable<Person>{ String name; String id; public ...

  4. P3812 【模板】线性基

    P3812 [模板]线性基 理解 :线性基 类似于 向量的极大无关组,就是保持原来所有数的异或值的最小集合, 求解过程也类似,可以 O( 60 * n )的复杂度求出线性基,线性基有许多性质,例如 线 ...

  5. linux 学习笔记四

    文件权限管理篇章 chown  -R mysql.  /usr/local 把 /usr/local/以及以下的所有文件和子目录属主改为  mysql ls -al * 用这条命令查询 chgrp c ...

  6. AS安装过程中出现的错误

    1.首先是You may need to adjust the proxy settings in Gradle.的错误, 主要是看你有没有图中红线所画的gradle的压缩包 如果没有,那就前往htt ...

  7. selenium 安装 以及相关环境

    在cmd中安装简单, pip install selenium 一键安装 如果需要  chromedriver   还需要安装相对应的   版本 看到网上基本没有最新的chromedriver与chr ...

  8. Centos6.5部署Rsyslog-日志的存储方式及监测服务状态

    1.以IP地址命名 在/etc/rsyslog.conf中加入如下配置,并做好备注.添加这三行配置之后,远程日志会被单独输出到一个以IP命名的日志文件中. #IP format by zhz at x ...

  9. C#最简单的连接数据库的方法

    在vs2010下建立项目(可以是WEB或者是FORM窗体应用程序),在VS2010中,找到“服务器资源管理器”,右击“数据连接”.在添加连接中设置服务器名(登录SQL Server时的服务器名称,可以 ...

  10. C# 结合html5 批量上传文件和图片预览

    html5 新特性 <input id="imgsf" type="file" name="imgsf" multiple /> ...