0
点赞
收藏
分享

微信扫一扫

shell编程脚本之免交互

一、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

shell编程脚本之免交互_存到文件

1.3.2、输入保存到文件

[root@ZX ~]# cat > name <<EOF   //输入保存到文件
> liuchun
> zhougang
> EOF

[root@ZX ~]# cat name ##cat查看文件内容是否存在
liuchun
zhougang

shell编程脚本之免交互_存到文件_02

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命令时,我们可以把输出重定向到文件中

shell编程脚本之免交互_赋值_03

1.3.5、read 命令接收输入并打印,输入值是两个 EOF 标记之间的部分

[root@ZX ~]# read a <<EOF    ##Linux read命令用于从标准输入读取数值
> 10
> EOF
[root@ZX ~]# echo $a ## 变量为$a
10

shell编程脚本之免交互_赋值_04

1.3.6、通过 passwd 给用户设置密码

[root@ZX ~]# passwd lisi <<EOF
> 123456
> 123456
> EOF
更改用户 lisi 的密码
新的 密码:无效的密码: 密码少于 8 个字符
重新输入新的 密码:passwd:所有的身份验证令牌已经成功更新。

shell编程脚本之免交互_标准输入_05

1.4、变量替换

1.4.1、文件要先将变量替换成实际值,在结合cat命令完成写入

[root@ZX ~]# aa=$(cat <<EOF    ##变量替换
> $a
> EOF
> )

echo $aa

shell编程脚本之免交互_存到文件_06

1.4.2、支持变量替换

#!/bin/bash 
doc_file="KY19.txt"
i="KY19"
cat > $doc_file << EOF
this is kgc $i
EOF

shell编程脚本之免交互_赋值_07

shell编程脚本之免交互_标准输入_08

1.4.3、整体赋值给一个变量,然后通过 echo 命令将变量值打印出来

#!/bin/bash 
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


举报

相关推荐

Shell脚本之免交互

shell脚本免交互

shell之免交互

shell编程之免交互

shell编程之免交互操作

shell 免交互

0 条评论