here document: 一个有特殊目的的代码段,它使用I/O重定向将一段代码(能传递参数和命令替换)传递到别的交互程序或命令中,通常用于交互式。
Usage:command << EndofMessage(<<-可以抑制文档前tab的输出,'EndofMessage'单引号可以阻止文档内变量的扩展)
conmmand 1
conmmand 2
...
EndofMessage
文件编辑
vi filename << EndOfMessage
i #编辑
content
^[ #esc
ZZ #退出并保存
EndOfMessage
密码修改
#!/bin/bash
passwd <<EndofMessage
passw0rd
passw0rd
EndofMessage
仿sed
ex filename << EndOfMessage
:%s/content1/content2/ #不要忘记%
:wq
EndOfMessage
ftp
ftp -n $server <<End-Of-Session
user anonymous "$passwd"
binary
bell
cd $Directory
put "$Filename.lsm"
put "$Filename.tar.gz"
bye
End-Of-Session
输出多行字符
cat << EndOfMessage
Line 1
Line 2
Line 3
...
EndOfMessage
cat > $Newfile << EndOfMessage 内容将不会输出,直接保存Newfile中
交互函数
GetpersonalData ()
{
read firstname
read lastname
read city
}
GetpersonalData <<EndOfMessage
Fan
Liu
Jiangxi
EndOfMessage
echo “$lastname $firstname”