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]#
如果用>>就是追加,不会覆盖 之前文件中的内容!
[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]#
=======================================================================
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又看到该分界符(位于单独的一行)。这个
分界符可以是你所定义的任何字符串。
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)]