在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 ~]#