shell符号解释

#符号详解
() 在子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

  

原文地址:https://www.cnblogs.com/xiaochina/p/10012746.html

时间: 2024-10-25 04:19:16

shell符号解释的相关文章

php 常用 正则 表达式 匹配 符号 解释

常用正则表达式全部符号解释 字符 描述 \ 将下一个字符标记为一个特殊字符.或一个原义字符.或一个 向后引用.或一个八进制转义符.例如,'n' 匹配字符 "n".'\n' 匹配一个换行符.序列 '\\' 匹配 "\" 而 "\(" 则匹配 "(". ^ 匹配输入字符串的开始位置.如果设置了 RegExp 对象的 Multiline 属性,^ 也匹配 '\n' 或 '\r' 之后的位置. $ 匹配输入字符串的结束位置.如果设置了

正则表达式符号解释

正则表达式全部符号解释 字符 描述 \ 将下一个字符标记为一个特殊字符.或一个原义字符.或一个 向后引用.或一个八进制转义符.例如,'n' 匹配字符 "n".'\n' 匹配一个换行符.序列 '\\' 匹配 "\" 而 "\(" 则匹配 "(". ^ 匹配输入字符串的开始位置.如果设置了 RegExp 对象的 Multiline 属性,^ 也匹配 '\n' 或 '\r' 之后的位置. $ 匹配输入字符串的结束位置.如果设置了Re

linux的特殊符号解释

转:https://www.cnblogs.com/balaamwe/archive/2012/03/15/2397998.html # 井号 (comments)这几乎是个满场都有的符号,除了先前已经提过的"第一行"#!/bin/bash井号也常出现在一行的开头,或者位于完整指令之后,这类情况表示符号后面的是注解文字,不会被执行.# This line is comments.echo "a = $a" # a = 0由于这个特性,当临时不想执行某行指令时,只需在

正则表达式全部符号解释

字符  描述 \  将下一个字符标记为一个特殊字符.或一个原义字符.或一个 向后引用.或一个八进制转义符.例如,'n' 匹配字符 "n".'\n' 匹配一个换行符.序列 '\\' 匹配 "\" 而 "\(" 则匹配 "(". ^  匹配输入字符串的开始位置.如果设置了 RegExp 对象的 Multiline 属性,^ 也匹配 '\n' 或 '\r' 之后的位置. $  匹配输入字符串的结束位置.如果设置了RegExp 对象的

正则表达式符号解释表

字符 描述 \ 将下一个字符标记为一个特殊字符.或一个原义字符.或一个 向后引用.或一个八进制转义符.例如,'n' 匹配字符 "n".'\n' 匹配一个换行符.序列 '\\' 匹配 "\" 而 "\(" 则匹配 "(". ^ 匹配输入字符串的开始位置.如果设置了 RegExp 对象的 Multiline 属性,^ 也匹配 '\n' 或 '\r' 之后的位置. $ 匹配输入字符串的结束位置.如果设置了RegExp 对象的 Mul

(备忘)正则表达式全部符号解释

字符 描述 \ 将下一个字符标记为一个特殊字符.或一个原义字符.或一个 向后引用.或一个八进制转义符.例如,'n' 匹配字符 "n".'\n' 匹配一个换行符.序列 '\\' 匹配 "\" 而 "\(" 则匹配 "(". ^ 匹配输入字符串的开始位置.如果设置了 RegExp 对象的 Multiline 属性,^ 也匹配 '\n' 或 '\r' 之后的位置. $ 匹配输入字符串的结束位置.如果设置了RegExp 对象的 Mul

Shell符号展开

字符 展开 * 这个 “*” 字符意味着匹配文件名中的任意字符 shell 把 “*” 展开成了另外的东西 ,在 echo 命令被执行前. ~家目录 算术表达式展开 算术表达式展开使用这种格式: $((expression)) echo $((2+2)) 算术表达式只支持整数(全部是数字,不带小数点) ,但是能执行很多不同的操作.这里是 一些它支持的操作符: 操作符 说明 + 加 - 减 * 乘 / 除(但是记住,因为展开只是支持整数除法,所以结果是整 数. ) % 取余,只是简单的意味着, “

Oracle中的PLsql的符号解释大全

一.字符tb集 在PL/SQL程序中,允许出现的字符集包括: 大小写字母(A-Z和a-z) 数字(0-9) 符号( ) + - * / < > = ! ~ ^ ; : . ’ @ % , " # $ & _ | { } ? [ ] 制表符.空格和回车符 PL/SQL对大小写不敏感,所以,除了在字符串和字符中,小写字母和它对应的大写字母是等价的. 二.词法单元 PL/SQL包含很多词法单元(lexical unit),大致可以分为以下几类: 分隔符(简单符号和复合符号) 标识符

正则表达式--符号解释

注:只写了自己还不太熟悉或者不了解的部分 \b 匹配一个单词边界 \B 匹配一个非单词边界 \D 匹配一个非数字 \w  匹配包括下划线的任何单词字符 \W 匹配任何非单词字符 \xn 匹配n[其中n为十六进制转义值,正则表达式可以使用ASCII编码] \num 匹配num[其中num为正整数].对所获取的匹配的引用.例如,'(.)\1' 匹配两个连续的相同字符. 不懂(查阅后添加用例便于理解) \n  标识一个八进制转义值或一个向后引用 \nm 标识一个八进制转义值或一个向后引用 \nml 若