% 除法 (Modulo)

在运算式中,用来表示 "除法"。

expr 10 % 2

此外,也被运用在关于变量的规则表达式当中的下列

${parameter%word}${parameter%%word}

一个 % 表示最短的 word 匹配,两个表示最长的 word 匹配。

= 等号 (Equals)

常在设定变数时看到的符号。

vara=123echo " vara = $vara"

或者像是 PATH 的设定,甚至应用在运算或判断式等此类用途上。

== 等号 (Equals)

常在条件判断式中看到,代表 "等于" 的意思。

if [ $vara == $varb ]

...下略

!= 不等于

常在条件判断式中看到,代表 "不等于" 的意思。

if [ $vara != $varb ]

...下略

^

这个符号在规则表达式中,代表行的 "开头" 位置,在[]中也与"!"(叹号)一样表示“非”

输出/输入重导向

> >> < << :> &> 2&> 2<>>& >&2

文件描述符(File Descriptor),用一个数字通常为0-9)来表示一个文件。

常用的文件描述符如下:

文件描述符 名称 常用缩写 默认值

0 标准输入 stdin 键盘

1 标准输出 stdout 屏幕

2 标准错误输出 stderr 屏幕

我们在简单地用<或>时,相当于使用 0< 或 1>下面会详细介绍)。

* cmd > file

把cmd命令的输出重定向到文件file中。如果file已经存在,则清空原有文件,使用bash的noclobber选项可以防止复盖原有文件。

* cmd >> file

把cmd命令的输出重定向到文件file中,如果file已经存在,则把信息加在原有文件後面。

* cmd < file

使cmd命令从file读入

* cmd << text

从命令行读取输入,直到一个与text相同的行结束。除非使用引号把输入括起来,此模式将对输入内容进行shell变量替换。如果使用<<- ,则会忽略接下来输入行首的tab,结束行也可以是一堆tab再加上一个与text相同的内容,可以参考後面的例子。

* cmd <<< word

把word而不是文件word)和後面的换行作为输入提供给cmd。

* cmd <> file

以读写模式把文件file重定向到输入,文件file不会被破坏。仅当应用程序利用了这一特性时,它才是有意义的。

* cmd >| file

功能同>,但即便在设置了noclobber时也会复盖file文件,注意用的是|而非一些书中说的!,目前仅在csh中仍沿用>!实现这一功能。

: > filename 把文件"filename"截断为0长度.# 如果文件不存在, 那么就创建一个0长度的文件(与'touch'的效果相同).

cmd >&n 把输出送到文件描述符n

cmd m>&n 把输出到文件符m的信息重定向到文件描述符n

cmd >&- 关闭标准输出

cmd <&n 输入来自文件描述符n

cmd m<&n m来自文件描述各个n

cmd <&- 关闭标准输入

cmd <&n- 移动输入文件描述符n而非复制它。

cmd >&n- 移动输出文件描述符 n而非复制它。

注意: >&实际上复制了文件描述符,这使得cmd > file 2>&1与cmd 2>&1 >file的效果不一样。


相关内容