cat和EOF的配合使用


在shell中经常看到下面这样的cat和eof的搭配使用的例子:

cat > workers.txt << EOF
{{ work01_hostname }} {{ work01_ip }}
{{ work01_hostname }} {{ work01_ip }}
EOF

cat > generate-kubelet-certificate.sh << EOF
IFS=$'\n'
for line in `cat workers.txt`; do
 
instance=`echo $line | awk '{print $1}'`
INTERNAL_IP=`echo $line | awk '{print $2}'`
EOF

 

今天来学习下这种用法:

cat > 文件名 << EOF

1

2

3

EOF

 

 

解释如下:

首先必须要说明的是EOF在这里没有特殊的含义,你可以使用FOE或OOO等(当然也不限制在三个字符或大写字符)。

 

1. cat<<EOF,表示以EOF输入字符为标准输入结束

[root@sql ~]# cat << eof
> 123
> 345
> 456
> eof
123
345
456
[root@sql ~]# cat << ooo
> 123
> 1231
> 123123
> ooo
123
1231
123123
[root@sql ~]# 

2. cat>filename,创建文件,并把标准输入输出到filename文件中,以ctrl+d作为输入结束

[root@sql ~]# cat > 1.txt
123
123
123
123
[root@sql ~]# cat 1.txt 
123
123
123
123
[root@sql ~]# 

3. cat>filename<<EOF,以EOF作为输入结束,和ctrl+d的作用一样

[root@sql ~]# cat > 1.txt << eof
> 123
> 123
> 123
> 444
> eof
[root@sql ~]# cat 1.txt 
123
123
123
444
[root@sql ~]# 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM