发布时间:2025-11-05 08:55:51 来源:技术快报 作者:人工智能
在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 oldgirl2、向轻行文追加多行文本到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 $oldboy4、云服务器提供商综合演示脚本
[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随便看看