shell Bash脚本:是否将文本附加到文件的新行?[重复]

anhgbhbe  于 2023-04-07  发布在  Shell
关注(0)|答案(1)|浏览(122)

此问题已在此处有答案

Add a newline only if it doesn't exist(20个回答)
4天前关闭。
我尝试在变量中写入一个公共SSH密钥,并将其附加到authorized_keys SSH文件(~/.ssh/authorized_keys)。问题是,它没有将其添加到新行。
最后,我得到了如下来自cat ~/.ssh/authorized_keys的内容,所有内容都在一行中:

ssh-rsa ... original@hostssh-rsa ... root@anotherhost

shell

sudo echo $SSH_KEY >> $SSH_AUTHORIZED_KEYS_FILE

我怎么能保证这不会破坏东西?

pgpifvop

pgpifvop1#

使用echo和-e选项(它可以解释反斜杠转义),并在你试图追加到文件中的内容前加上“\n”。这首先会向文件写入一个换行符,然后是你的变量的值。

echo -e "\n$SSH_KEY" >> $SSH_AUTHORIZED_KEYS_FILE

请注意,运行echo时不带-n选项会自动在输出的末尾加上另一个换行符。如果你想防止这种情况,可以这样写:

echo -ne "\n$SSH_KEY" >> $SSH_AUTHORIZED_KEYS_FILE

相关问题