COMP9044/2041 Software Construction: Techniques and Tools 22_T2笔记

Week01 Regular Expression

  1. " "中可以引用变量,而' '中不可以引用变量。单引号和双引号的作用都是组织特殊字符。

  2. 标准的正则表达式使用方括号[] 表示字符列表,俗称字符集。
    字符列表 [^字符集] 用于匹配不存在 [^字符集]中任意字符的字符串,(注:无需在每个字符前都重复加^)
    例如 [^ab] 可以匹配任意单个字符,除了字符a或字符b
    特别的:
    如果不需要匹配^ ,则对应的正则表达式是[^^](第一个^代表非,第二个^代表字符本身)
    如果不需要匹配^\这两个字符,则对应的正则表达式是[^^\\](第一个\代表转义,第二个\代表字符本身)

  3. > >> < <<都用于重定向:
    scriptname > filename 重定向脚本的输出到文件中, 覆盖原有内容
    command &> filename 重定向 stdout 和 stderr 到文件中
    >& 合并2和1输出
    command >&2 重定向 stdout 和 stderr
    scriptname >> filename 重定向脚本输出到文件中(相当于append追加,不会覆盖已有内容), 添加到文件尾端, 如果没有文件, 则创建这个文件。
    <<用于Here Document
    <<<用于Here String

Here Document

一个Here Document就是一段带有特殊目的的代码段。中文名可以叫嵌入文档,缩写为HereDoc
它使用I/O重定向的形式将一个命令序列传递到一个交互程序或者命令中, 比如ftp, cat, 或者ex文本编辑器。
如果你尝试在脚本嵌入一小块多行数据,使用 Here Document 是很有用的,而嵌入很大的数据块是一个不好的习惯。你应该保持你的逻辑(你的代码)和你的输入(你的数据)分离,最好是在不同的文件中,除非是输入一个很小的数据集。

Here Document 的基本用法是:

cmd << EOF
  document1
  document2
  ...
  documentN    # 文件的内容
EOF

其中cmd是shell命令,<<是重定向引导标记,其后的EOF标志着HereDoc的开始,末尾的EOF标志着HereDoc的结束。EOF是一个限定符,可以由开发人员替换成任意字符串。两个限定符之间的内容将被当做是一个doc并用作 cmd命令 的标准输入。

EOF作为一个tag,可以被替换成任意字符串。tag之后的内容会作为前面的shell命令需要处理的数据,直到再次遇见顶格写、独占一行的tag为止。因此我们需要注意:

  1. 标志文件结束的tag一定要顶格写并且独占一行
  2. 在Here Document中,也可以出现tag,前提是tag没有顶格出现并作为独立的一行单独存在

举个栗子:

$ cat <<END
> COMP9044
> 22T2
> END
COMP9044
22T2

忽略命令替换

默认情况下,正文中出现的变量和命令也会被求值或运行,Shell 会先将它们替换以后再交给 command,请看下面的例子:

$ courseID=COMP9044
$ name=Software Construction: Techniques and Tools
$ cat <<END
> ${courseID} is ${name}.
> END
COMP9044 is Software Construction: Techniques and Tools.

用单引号或双引号将分解符包裹起来可以使shell中的变量替换失效

$ courseID=COMP9044
$ name=Software Construction: Techniques and Tools
$ cat <<’END‘
> ${courseID} is ${name}.
> END
${courseID} is ${name}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值