Here Document 免交互
Here Document的定义
使用I/O重定向的方式将命令列表提供给交互式程序,标准输入的一种替代品
语法格式
命令 <<标记
… #标记之间是传入内容
…
标记
使用时的注意事项
标记可以使用任意合法字符(通常为EOF)
结尾的标记一定要顶格写,前面不能有任何字符
结尾的标记后面也不能有任何字符(包括空格)
开头标记前后的空格会被省略掉
免交互方式实现对行数的统计,将要统计的内容置于标记“EOF”之间,直接将内容传给 wc -l 来统计
wc -l <<EOF
Line1
Line2
EOF
通过 read 命令接收输入并打印,输入值是两个 EOF 标记之间的部分,作为变量 i 的值
read i <<EOF
Hi
EOF
echo $i
通过 passwd 给用户设置密码
passwd lisi <<EOF
abc1234 #这两行是输入的密码和确认密码
abc1234
EOF
支持变量替换
#!/bin/bash
file=“EOF1.txt”
i=“school”
cat > $file <<EOF
I am going to $i
EOF
cat EOF1.txt
整体赋值给变量
#!/bin/bash
var=“Great! I am going to school!”
myvar=$(cat <<EOF
This is Line 1.
Today is Monday.
$var
EOF
)
echo $myvar
关闭变量替换的功能
#!/bin/bash
var=“Great! I am going to school!”
myvar=$(cat <<‘EOF’ #对标记加单引号,即可关闭变量替换
This is Line 1.
Today is Monday.
$var
EOF
)
echo $myvar
去掉每行之前的 TAB 字符或者空格
#!/bin/bash
var=“Great! I am going to school!”
myvar=$(cat <<-‘EOF’ #对标记前加“-”,即可抑制各行首TAB或空格
This is Line 1.
Today is Monday.
$var
EOF
)
echo $myv