ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 使用cat和重定向轻松生成多行文本,你肯定不会!

使用cat和重定向轻松生成多行文本,你肯定不会!

原创 Linux操作系统 作者:老男孩Linux 时间:2025-11-19 13:47:29 0 删除 编辑

  在Linux系统的shell脚本中,有时候我们 需要在脚本程序的执行过程中输出一些文件。

  这些文件可能是一个简单的文本文档、也可能是脚本执行过程中产生的一些数据的记录或者根据需要建立输出一个新的脚本到系统中等等。

  对于这样的情况我们可以 采用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都有效,前面加tabcat <<'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

 


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69952968/viewspace-3102354/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
老男孩it教育——致力于帮助有志向的年轻人通过努力学习获得体面的工作和生活。专注于Linux云计算运维、Python全栈开发、网络安全、新媒体运营、容器云架构师、MySQL数据库、go语言的培训。学习可call:18710030740

注册时间:2019-11-06

  • 博文量
    393
  • 访问量
    1011485