『阿男的技术日志』*01 Bash的Here Document的使用方法*
Bash支持<<
加上一个标记符号来进行多行输入stdin。比如下面这样的使用方法:
$ sed 's/-/_/g' << EOF
> 1-2
> 3-4
> EOF
1_2
3_4
如上所示,我们把两行数据1-2
和3-4
通过<<
输入给了sed
命令,而EOF
的含义就是用来标记多行文本的结束。我们可以使用任何字符表示结束,不一定是EOF
,只要保证文本结束的时候才会出现这串字就可以。
上面是第一种写法,我们也可以使用下面这种写法:
$ cat << EOF |
> 1-2
> 3-4
> EOF
> sed 's/-/_/g'
1_2
3_4
这样的写法与第一种是等价的,只是我们使用了cat
加上管道操作符的方式输入数据给sed
。
此外,bash
还可以支持我们这么写:
$ cat << EOF | sed 's/-/_/g'
> 1-2
> 3-4
> EOF
1_2
3_4
和第二种写法比起来,区别在于我们的命令直接接在了管道操作符后面,然后再输入文本。
这三种写法达到的效果是等价的。