Shell - 将变量内容写入文件

新手上路,请多包涵

我想将一个变量的内容(这里称为 var )复制到一个文件中。

文件名存储在另一个变量 destfile 中。

我在执行此操作时遇到问题。这是我尝试过的:

 cp $var $destfile

我也用 dd 命令尝试过同样的事情……显然,shell 认为 $var 指的是一个目录,所以告诉我找不到该目录。

我该如何解决这个问题?

原文由 user1546083 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.5k
2 个回答

使用 echo 命令:

 var="text to append";
destdir=/some/directory/path/filename

if [ -f "$destdir" ]
then
    echo "$var" > "$destdir"
fi

if 测试 $destdir 代表一个文件。

> 在截断文件后附加文本。如果您只想将 $var 中的文本附加到文件现有内容中,请改用 >>

 echo "$var" >> "$destdir"

cp 命令用于复制文件(到文件),而不是用于将文本写入文件。

原文由 pb2q 发布,翻译遵循 CC BY-SA 3.0 许可协议

echo 的问题是,如果 var 包含类似 -e 的内容,它将被解释为标志。另一个选项是 printf ,但是 printf "$var" > "$destdir" 将扩展变量中的任何转义字符,因此如果变量包含反斜杠,则文件内容将不匹配。但是,因为 printf 仅将反斜杠解释为格式字符串中的转义,您可以使用 %s 格式说明符将确切的变量内容存储到目标文件:

printf "%s" "$var" > "$destdir"

原文由 Trebawa 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题