这个问题在这里已经有了答案: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
我究竟做错了什么?
这应该有效:
cat "$API" >> "$CONFIG"
您需要使用 >>
运算符附加到文件。使用 >
重定向会导致文件被覆盖。 (截断)。
echo
echo "export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_112" >> ~/.bashrc
echo
而不是cat
?cat
将命名文件的内容写入标准输出。echo
将参数写入标准输出。他们做不同的事情。more
是一个糟糕的选择。more
的目的是将输出缓冲到 tty 并将其分解为供交互式人类使用的部分。写入文件没有任何交互性。如果某些 shell 有more
作为内置但没有cat
是实现细节。