一、Here Document免交互
1.1免交互的定义
使用 I/O 重定向的方式将命令列表提供给交互式程序或命令,比如 ftp、cat 或 read 命令。
HereDocument是标准输入的一种替代品,可以帮助脚本开发人员不必使用临时文件来构建输入信息,而是直接就地生产出一个文件并用作命令的标准输入
1.2免交互的基本语法格式
命令 <<标记
##(要输入的内容)
##(要输入的内容)
标记
注意事项:
1)标记可以使用任意的合法字符(通用的字符时EOF)
2)结尾的标记一定要顶格写,前面不能有任何字符(包括空格)
3)结尾的标记后面也不能有任何字符(包括空格)
4)开头标记前后空格会被省略掉
5)单引号 变量双引号 —
1.3、案例
1.3.1、接把输入的从命令行输出
cat <<EOF ##直接把输入的从命令行输出
> hello world
> EOF
hello world
1.3.2、输入保存到文件
[root@ZX ~]# cat > name <<EOF //输入保存到文件
> liuchun
> zhougang
> EOF
[root@ZX ~]# cat name ##cat查看文件内容是否存在
liuchun
zhougang
1.3.3、追加输入保存到文件
[root@ZX ~]# cat >> name <<EOF //追加输入保存到文件
> liufei
> EOF
[root@ZX ~]# cat name ##cat查看文件内容是否存在,是否插入成功
liuchun
zhougang
liufei
1.3.4、创建yum源
[root@ZX ~]# cat > test.repo <<EOF
> [test]
> name=test ##仓库名称
> baseurl=file:///mnt ##指定URL,访问路径为光盘挂载目录(//表示本地访问页面的方式 ; /mnt:是根目录下访问挂载点mount)
> enabled=1 ##开启此yum源,此为默认项
> gpgcheck=0 ##不验证软件包的签名(1则为验证)
> EOF
此外还要另一种写法
1)cat <<EOF > local.repo ##将原位置调换,但意思不变
2)tee test1.txt <<EOF ##在执行Linux命令时,我们可以把输出重定向到文件中
1.3.5、read 命令接收输入并打印,输入值是两个 EOF 标记之间的部分
[root@ZX ~]# read a <<EOF ##Linux read命令用于从标准输入读取数值
> 10
> EOF
[root@ZX ~]# echo $a ## 变量为$a
10
1.3.6、通过 passwd 给用户设置密码
[root@ZX ~]# passwd lisi <<EOF
> 123456
> 123456
> EOF
更改用户 lisi 的密码 。
新的 密码:无效的密码: 密码少于 8 个字符
重新输入新的 密码:passwd:所有的身份验证令牌已经成功更新。
1.4、变量替换
1.4.1、文件要先将变量替换成实际值,在结合cat命令完成写入
[root@ZX ~]# aa=$(cat <<EOF ##变量替换
> $a
> EOF
> )
echo $aa
1.4.2、支持变量替换
doc_file="KY19.txt"
i="KY19"
cat > $doc_file << EOF
this is kgc $i
EOF
1.4.3、整体赋值给一个变量,然后通过 echo 命令将变量值打印出来
ivar="Great! Beautyful!"
myvar=$(cat <<EOF #将Here Document 整体赋值给变量
This is Line 1.
That are Sun,Moon and Stars.
$ivar #输出时会进行变量替换
EOF
)
1.5.、格式控制
1.5.1、关闭变量替换的功能
aa=$(cat <<'EOF' //关闭变量替换 对标记加单引号,即可关闭变量替换
20
$a
EOF
)
echo $aa