EOF分界符和追加输入(交互式新技能get起来!!!!)

hi bro

good luck

lucky 2020

2020 lucky

[root@controller eof]# cat >eof.log<<EOF

now test

EOF

[root@controller eof]# cat eof.log

now test

[root@controller eof]#

例3(>> 写入文件)


如果用>>就是追加,不会覆盖 之前文件中的内容!

[root@controller eof]# cat>>eof.log<<EOF

hi bro

EOF

[root@controller eof]# cat eof.log

hi bro

[root@controller eof]# cat>>eof.log<<EOF

good luck

lucky 2020

EOF

[root@controller eof]# cat eof.log

hi bro

good luck

lucky 2020

[root@controller eof]#

EOF交互式说明

=======================================================================

Shell中通常将EOF与 << 结合使用,表示后续的输入作为子命令或子Shell的输入,直到遇到EOF为止,再返回到主调Shell。如下:

export NLS_LANG=‘SIMPLIFIED CHINESE_CHINA.ZHS16GBK’

sqlplus U S E R I D @ USERID @ USERID@OUT_FILE << EOF

exit

EOF

当把这段代码放在Shell中时,会在Shell脚本执行完毕后自动退出SQLPLUS的命令提示符状态。

<<EOF

(内容)

EOF

可以把EOF替换成其他东西

意思是把内容当作标准输入传给程序

这里再简要回顾一下< <的用法。当shell看到<<的时候,它就会知道下一个词是一个分界

符。在该分界符以后的内容都被当作输入,直到shell又看到该分界符(位于单独的一行)。这个

分界符可以是你所定义的任何字符串。

EOF交互式使用


1、用来查询数据库

需要,自动登录mysql(root:root,passwd:123456),查询test库,test1表里的user=aa的记录.

#!/bin/sh

mysql -uroot -p123456 <<EOF

use test;

select * from testaa while a=10000; ###1000 not usr single quote mark,because a is int

type,only char type need single quote mark.

exit

EOF

2、用来执行脚本

就是把脚本内容放在 EOF 里面。

[root@controller eof]# cat 1.sh

#!/bin/bash

这个ip可以放文件,或者用遍历方式实现 批量运行哦。

ssh 192.168.198.130 << EOF

ls

df -Th

systemctl restart network

#这可以放任何代码

EOF

[root@controller eof]#

[root@controller eof]#

[root@controller eof]#

[root@controller eof]# sh 1.sh

Pseudo-terminal will not be allocated because stdin is not a terminal.

root@192.168.198.130’s password:

anaconda-ks.cfg

ccx

Desktop

Documents

Downloads

initial-setup-ks.cfg

Music

Pictures

Public

Templates

Videos

文件系统 类型 容量 已用 可用 已用% 挂载点

/dev/mapper/centos-root xfs 47G 4.6G 43G 10% /

devtmpfs devtmpfs 894M 0 894M 0% /dev

tmpfs tmpfs 910M 0 910M 0% /dev/shm

tmpfs tmpfs 910M 19M 892M 2% /run

tmpfs tmpfs 910M 0 910M 0% /sys/fs/cgroup

/dev/sda1 xfs 1014M 179M 836M 18% /boot

tmpfs tmpfs 182M 12K 182M 1% /run/user/42

tmpfs tmpfs 182M 0 182M 0% /run/user/0

[root@controller eof]#

会用EOF交互式实现交互式以后,就会有点嫌弃expect交互式了吧!!!

下面放一个expect的脚本感受一下

#!/bin/bash

while read ip;do

user=root

password=root

expect << EOF

set timeout 20

spawn ssh u s e r @ user@ user@ip

expect {

“*assword” { send “$password\r”;}

“yes/no” {send "yes\r"exp_continue}

}

expect “]#” { send " useradd ccxhero\n" }

#需要注意,密码那建议加上单引号,因为如果密码中有特殊符号,如:&,如果不加单引号执行脚本就会报错!

expect “]#” { send “echo ‘ccxhero’ | passwd --stdin xz_tyng\n” }

send “exit\n”

expect eof

EOF

done < iplist.txt

3、将执行命令结果写入文件中

格式为:ssh ip <<eof > 结果存放路径

[root@centos76_1 ccx]# ssh 192.168.59.128 << eof > /data/df

df -h

df

eof

Pseudo-terminal will not be allocated because stdin is not a terminal.

root@192.168.59.128’s password:

[root@centos76_1 ccx]# cat /data/df

文件系统 容量 已用 可用 已用% 挂载点

/dev/mapper/centos-root 50G 3.6G 47G 8% /

devtmpfs 16G 0 16G 0% /dev

tmpfs 16G 0 16G 0% /dev/shm

tmpfs 16G 21M 16G 1% /run

tmpfs 16G 0 16G 0% /sys/fs/cgroup

/dev/sda1 1014M 179M 836M 18% /boot

/dev/mapper/centos-home 39G 33M 39G 1% /home

tmpfs 3.2G 8.0K 3.2G 1% /run/user/42

tmpfs 3.2G 52K 3.2G 1% /run/user/0

文件系统 1K-块 已用 可用 已用% 挂载点

/dev/mapper/centos-root 52403200 3677688 48725512 8% /

devtmpfs 16363848 0 16363848 0% /dev

tmpfs 16380928 0 16380928 0% /dev/shm

tmpfs 16380928 21120 16359808 1% /run

tmpfs 16380928 0 16380928 0% /sys/fs/cgroup

/dev/sda1 1038336 182780 855556 18% /boot

/dev/mapper/centos-home 40870404 33100 40837304 1% /home

tmpfs 3276188 8 3276180 1% /run/user/42

tmpfs 3276188 52 3276136 1% /run/user/0

[root@centos76_1 ccx]#

脚本注释使用

=====================================================================

如果在脚本开头使用这个的话,执行脚本就会显示这个内容

#!/bin/bash

cat << EOF


  • 0、使用环境(source openrc) *

  • 1、认证模块检查(openstack token issue) *

  • 2、计算模块检查(nova service-list) *

  • 3、网络模块检查(neutron agent-list) *

  • 4、存储模块检查(cinder service-list *

  • 5、镜像模块检查(glance image-list) *

  • 6、检查Horizon服务(ps -ef|grep apache) *

知其然不知其所以然,大厂常问面试技术如何复习?

1、热门面试题及答案大全

面试前做足功夫,让你面试成功率提升一截,这里一份热门350道一线互联网常问面试题及答案助你拿offer

2、多线程、高并发、缓存入门到实战项目pdf书籍

3、文中提到面试题答案整理

4、Java核心知识面试宝典

覆盖了JVM 、JAVA集合、JAVA多线程并发、JAVA基础、Spring原理、微服务、Netty与RPC、网络、日志、Zookeeper、Kafka、RabbitMQ、Hbase、MongoDB 、Cassandra、设计模式、负载均衡、数据库、一致性算法 、JAVA算法、数据结构、算法、分布式缓存、Hadoop、Spark、Storm的大量技术点且讲解的非常深入


转存中…(img-ycr9HMcX-1721133691603)]

3、文中提到面试题答案整理

[外链图片转存中…(img-O96Yi6hj-1721133691604)]

4、Java核心知识面试宝典

覆盖了JVM 、JAVA集合、JAVA多线程并发、JAVA基础、Spring原理、微服务、Netty与RPC、网络、日志、Zookeeper、Kafka、RabbitMQ、Hbase、MongoDB 、Cassandra、设计模式、负载均衡、数据库、一致性算法 、JAVA算法、数据结构、算法、分布式缓存、Hadoop、Spark、Storm的大量技术点且讲解的非常深入

[外链图片转存中…(img-lEgsqIl9-1721133691604)]

[外链图片转存中…(img-MXK697RK-1721133691605)]

[外链图片转存中…(img-XRzGUlNS-1721133691605)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值