使用cat <将字符串写入文件时防止变量替换

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用cat <将字符串写入文件时防止变量替换相关的知识,希望对你有一定的参考价值。

这个问题在这里已有答案:

我想在bash脚本中将字符串写入文件,但不知道如何防止变量被扩展。示例脚本:

#!/bin/bash

cat >./foo.bar <<EOL
t=$(ping 8.8.8.8)
EOL

产生输出:

t=
Pinging 8.8.8.8 with 32 bytes of data:
Reply from 8.8.8.8: bytes=32 time=17ms TTL=57
Reply from 8.8.8.8: bytes=32 time=16ms TTL=57
Reply from 8.8.8.8: bytes=32 time=17ms TTL=57
Reply from 8.8.8.8: bytes=32 time=17ms TTL=57

Ping statistics for 8.8.8.8:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 16ms, Maximum = 17ms, Average = 16ms

因此,似乎$(ping 8.8.8.8)正在执行,输出正在写入文件。如何在不扩展任何内容的情况下编写提供的文字字符串?

答案
cat >./foo.bar <<'EOL'
t=$(ping 8.8.8.8)
EOL

引用Bash Reference Manual

[n]<<[-]word

如果引用word的任何部分,则分隔符是word上的引用删除的结果,并且here-document中的行不会被展开。

以上是关于使用cat <将字符串写入文件时防止变量替换的主要内容,如果未能解决你的问题,请参考以下文章

linux在shell下如何将字符串写入文件?

使用 write.csv 时防止将行名写入文件

Linux Shell基线配置相关操作

cat - EOF标志的使用

C#防止打印机密

R:使用 cat() 获取类似 Unix 的换行符 LF 写入文件