#符号详解
() 在子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. miniui格式化日期的方法

    <div field="InsertTime" renderer="ondayRenderer" headerAlign="center&quo ...

  2. 模运算(附加几种数据类型的数据范围判断)-hdu3123

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3123 预备知识点: (a+b)%m=[(a%m)+(b%m)]%m(a*b)%m=[(a%m)*(b% ...

  3. 大数据技术 - MapReduce的Combiner介绍

    本章来简单介绍下 Hadoop MapReduce 中的 Combiner.Combiner 是为了聚合数据而出现的,那为什么要聚合数据呢?因为我们知道 Shuffle 过程是消耗网络IO 和 磁盘I ...

  4. 解决UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range

    字符串在Python内部的表示是unicode编码,因此,在做编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码(decode)成unicode,再从unicode编码(en ...

  5. PTA 5-3 解题报告

    GitHub 问题描述 解题思路 代码 问题描述 5-3 计算平均值 (50分) 现在为若干组整数分别计算平均值. 已知这些整数的绝对值都小于100,每组整数的数量不少于1个,不大于20个. 输入格式 ...

  6. 表单提交和ajax提交数据的请求区别

    在http请求中,我们通常会看到请求字段以query string parameters,或form data,或request payload形式发送到服务器,究竟他们有什么区别呢?下面为您揭晓答案 ...

  7. sql语句1——join

    注:一下内容来自于http://www.w3school.com.cn/sql/ 1. 引用两个表 我们可以通过引用两个表的方式,从两个表中获取数据: 谁订购了产品,并且他们订购了什么产品? sele ...

  8. 电脑用bat脚本给手机批量自动安装apk文件 autoInstall.bat

    ------创建这个文件autoInstall.bat 内容如下: @ECHO off @REM 将adb.exe添加到PATH中ECHO 初始化…@SET PATH=%PATH%;%CD%\Adb@ ...

  9. BZOJ.4910.[SDOI2017]苹果树(树形依赖背包 DP 单调队列)

    BZOJ 洛谷 \(shadowice\)已经把他的思路说的很清楚了,可以先看一下会更好理解? 这篇主要是对\(Claris\)题解的简单说明.与\(shadowice\)的做法还是有差异的(比如并没 ...

  10. ajax中的async属性值之同步和异步及同步和异步区别

    jquery中ajax方法有个属性async用于控制同步和异步,默认是true,即ajax请求默认是异步请求,有时项目中会用到AJAX同步.这个同步的意思是当JS代码加载到当前AJAX的时候会把页面里 ...