在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都有效,前面加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
更多精彩内容
欢迎关注公众号 【老男孩Linux】