Contents

如何将bash变量内容写入文件

1. 概述

有时,在 Linux 中编写脚本时,我们可能希望将Bash 变量的内容写入文件。在本教程中,我们将介绍几种将存储在 Bash 变量中的信息写入文件的方法。

2. 使用echo

我们可以将变量内容写入文件的一种方法是使用 echo 命令和重定向运算符

让我们从一个简单的 Bash 命令开始:

$ my_var="some value"
$ echo "$my_var" > file.log
$ cat file.log

这将创建一个变量*$my_var* , 使用echo将其写入文件 file.log ,然后输出文件的内容以供检查:

some value

echo命令中,我们在*$my_var周围使用双引号 来避免echo*将字符串内容解释为参数的情况。例如,让我们运行:

$ my_var="-e some value"
$ echo $my_var > file.log
$ cat file.log

我们看到以下输出:

some value

在这种情况下,-e 参数适用于对 echo的调用,并且不会作为输出发送到文件。所以我们只看到“一些价值”。 我们应该注意的另一件事是,默认情况下,echo在 input 的末尾放置一个换行符

3. 使用 printf

正如我们在上面看到的,在某些情况下,使用echo对某些文本输入不起作用。另一种选择是使用 printf 。这为我们的字符串提供了更多的格式化选项。另一个优点是,如果将变量写入文件时出现问题,printf 返回非零退出代码,而 echo始终返回 0。

从上面更改我们的命令:

$ my_var="some value"
$ printf "$my_var" > file.log
$ cat file.log

我们可以看到以下输出:

some value$

但是,如果我们希望此输出与echo输出匹配,我们需要 在*$myvar之后添加\n*。这是因为printf默认不添加换行符。在我们添加换行符之后,变量内容在它自己的行上:

$ my_var="some value"
$ printf "$my_var\n" > file.log
$ cat file.log
some value
$

4. herestring

**我们也可以herestring 将变量内容写入文件。**它允许将字符串重定向到命令。这具有处理变量中可能存在的任意字符的优点。

让我们试一试:

$ my_var="some value -e \n"
$ cat <<< "my variable is $my_var" > file.log
$ cat file.log

在这里,我们将*$my_var设置为一个字符串。使用这里的字符串,我们然后将包含变量的自定义字符串发送到cat 。第三,我们 通过>将**cat*的输出定向到输出文件。最后,我们再次使用 cat来查看文件中变量的完整内容:

my variable is some value -e \n