ChatGPT解决这个技术问题 Extra ChatGPT

将文件内容附加到 Bash 中现有文件的底部 [重复]

这个问题在这里已经有了答案:9 年前关闭。

可能重复:将文本附加到每个文件的 Shell 脚本?如何在 SHELL 脚本中将输出附加到文本文件的末尾?

我正在尝试找出将 api 详细信息插入到预先存在的配置中的最佳方法。我想过使用 sed 将 api 文本文件的内容插入到 config.inc 文件的底部。我已经启动了脚本,但它不起作用,它会擦除文件。

#!/bin/bash

CONFIG=/home/user/config.inc
API=/home/user/api.txt

sed -e "\$a $API" > $CONFIG

我究竟做错了什么?


W
William Pursell

这应该有效:

 cat "$API" >> "$CONFIG"

您需要使用 >> 运算符附加到文件。使用 > 重定向会导致文件被覆盖。 (截断)。


对于单个字符串,像这样使用 echo echo "export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_112" >> ~/.bashrc
为什么是 echo 而不是 cat
cat 将命名文件的内容写入标准输出。 echo 将参数写入标准输出。他们做不同的事情。
应该使用“更多”而不是“猫”,因为猫会产生一个新进程。
@PTHuynh more 是一个糟糕的选择。 more 的目的是将输出缓冲到 tty 并将其分解为供交互式人类使用的部分。写入文件没有任何交互性。如果某些 shell 有 more 作为内置但没有 cat 是实现细节。