目录
示例5:通过read命令接收输入并打印,输入值是两个EOF标记之间的部分,也就是520,这将作为变量a的值
1.4.1 在写入文件时要先将变量值换成实际值,再结合cat命令完成写入
一、Here Document免交互
1.1 免交互定义
(1)使用I/O重定向的方式将命令列表提供给交互式程序
(2)标准输入的一种替代品,可以帮助脚本开发人员不必使用临时文件来构建输入信息,而是直接就地 生产出一个文件并用作命令的标准输入,Here Document 可以与非交互式程序和命令一起使用。
1.2 语法格式
命令 << 标记
....
输入内容
......
标记
注意事项
-
标记可以使用任意的合法字符(通用的字符是EOF)
-
结尾的标记一定要顶格写,前面不能有任何字符(包括空格)
-
结尾的标记后面也不能有任何字符(包括空格)
-
开头标记前后空格会被省略掉
1.3 示例
示例1:直接把输入的从命令行输出
示例2:输入保存到文件
示例3:追加输入到文件
示例4:创建yum源
示例5:通过read命令接收输入并打印,输入值是两个EOF标记之间的部分,也就是520,这将作为变量a的值
示例6:通过passwd给用户设置密码
1.4 变量设定(支持变量替换)
1.4.1 在写入文件时要先将变量值换成实际值,再结合cat命令完成写入
案例1:变量替换
[root@localhost /home]#vim test.sh
#!/bin/bash
doc_file="gkd.txt"
i="nanjing"
cat > $doc_file <<EOF
welcome to $i
EOF
[root@localhost /home]#sh test.sh
[root@localhost /home]#cat gkd.txt
welcome to nanjing
案例2:整体赋值给变量,用echo将变量值打印出来
[root@localhost /home]#vim test2.sh
#!/bin/bash
test="you are very good!"
mylife=$(cat <<EOF
冲冲冲!
干就完了!!!
$test
EOF
)
echo $mylife
[root@localhost /home]#sh test2.sh
冲冲冲! 干就完了!!! you are very good!
1.5 格式控制
1.5.1 关闭变量替换的功能
关闭变量替换的功能,按照字符原本的样子输出,不做任何修改或替换
示例1:关闭变量替换
#对标记加单引号,即可关闭变量替换
[root@localhost /home]#aa=$(cat <<'EOF'
> 10
> $a
> EOF
> )
[root@localhost /home]#echo $aa
10 $a
[root@localhost /home]#echo $a
520