使用cat和重定向生成多行文本知识干货

说明:运维人员在写自动化脚本时,cat命令配合重定向符号是非常常用的实现将多文本写入到指定文件且不用交互的方法。

cat 查看文本文件内容
EOF 全拼"end of file",文件结束符
>标准输出重定向
<<追加输入重定向

1、追加多行文本到oldboy.txt

cat >/opt/oldboy.txt <<EOF
oldboy
oldgirl
EOF
cat /opt/oldboy.txt
注:
1.EOF要成对,EOF也可以是和增加内容不冲突的其他字符串。
2.结尾EOF要顶格,EOF后面也不能有任何字符(包括空格)否则会出错。

输出结果

oldboy
oldgirl

2、追加多行文本到oldboy.txt,文本中带特殊字符,例如:$

方法1:传统方法,转义特殊字符

cat > /opt/oldboy.sh <<EOF
oldboy="I am oldboy."
echo \$oldboy
EOF
注用反斜线对特殊字符$进行转义,写法为\$

方法2:本文方法,无需对特殊字符转义(本文精髓)
#起始EOF被加上双引号或者单引号,即可解决特殊字符转义问题。

cat > /opt/oldboy.sh <<EOF
oldboy="I am oldboy."
echo $oldboy
EOF
注:把首个EOF用单引号或双引号引起来。

方法1和方法2输出结果同为:

oldboy="I am oldboy."
echo $oldboy
#可以看到$符号正常

 

3、直接输出多行文本到屏幕(-的作用)

#正常输出,空格,tab都有效,前面加tab
cat <<EOF
  oldboy="I am oldboy."
  echo $oldboy
EOF
#输出结果(保留tab,所以看起来缩进了):
  oldboy="I am oldboy."
  echo $oldboy

#EOF前加-,会忽略TAB键[不能是空格]
cat <<-EOF
  oldboy="I am oldboy."
  echo $oldboy
  EOF
#注:
#1.结尾的EOF也可以不顶格了(加tab)。
#2.注意输出是否顶格。
#输出结果(忽略了tab):
oldboy="I am oldboy."
echo $oldboy

4.综合演示脚本

[root@oldboy ~]# cat oldboy.sh 

#范例1:追加多行普通文本
echo ------范例1:--------------

cat >/opt/oldboy.txt <<EOF
oldboy
oldgirl
EOF
cat /opt/oldboy.txt
#注:
#1.EOF要成对,EOF也可以是和增加内容不冲突的其他字符串。
#2.结尾EOF要顶格,EOF后面也不能有任何字符(包括空格)否则会出错。
echo ------范例2:--------------

#范例2:追加带特殊字符的多行文本
#方法1:传统方法,转义特殊字符
cat >/opt/oldboy.sh <<EOF
oldboy="I am oldboy."
echo \$oldboy
EOF
#注:用反斜线对特殊字符$进行转义,写法为\$
cat /opt/oldboy.sh
echo ------范例3:--------------

#方法2:本文方法,无需对特殊字符转义
#起始EOF被加上双引号或者单引号,即可解决特殊字符转义问题。
cat > /opt/oldboy.sh <<EOF   
oldboy="I am oldboy."
echo $oldboy
EOF
#注:把首个EOF用单引号或双引号引起来。
cat /opt/oldboy.sh
echo ------范例4:--------------

#范例4:
#正常输出,空格,tab都有效
cat <<EOF
    oldboy="I am oldboy."
    echo $oldboy
EOF

#EOF前加-,会忽略TAB键[不能是空格]
cat <<-EOF
    oldboy="I am oldboy."
    echo $oldboy
    EOF
#注:
#1.结尾的EOF也可以不顶格了。
#2.注意输出是否顶格。

执行结果

[root@oldboy ~]# sh oldboy.sh 
------范例1:--------------
oldboy
oldgirl
------范例2:--------------
oldboy="I am oldboy."
echo $oldboy
------范例3:--------------
oldboy="I am oldboy."
echo $oldboy
------范例4:--------------
    oldboy="I am oldboy."
    echo $oldboy
oldboy="I am oldboy."
echo $oldboy

 

使用cat和重定向生成多行文本知识干货

上一篇:从零开始学习前端JAVASCRIPT — 6、JavaScript基础DOM


下一篇:element rate 分数后加字