【发布时间】:2021-06-17 09:16:54
【问题描述】:
我是一名学习者,我刚刚创建了一个新的 bash 脚本,它从命令行读取两个文件名并将它们的内容连接起来打印。但是,它不起作用。我有两个文件:log1.txt 和 log2.txt,它们都以换行符结尾。我的代码基本上是这样的:
File+=$(cat "$first")
File+=$(cat "$second")
echo "$File"
但是,第一个文件的结尾和第二个文件的开头合并在一行中。我该如何解决?我已经在谷歌上搜索了几个小时,如果有任何帮助,我将不胜感激。
【问题讨论】:
-
命令替换的记录、正常、预期、开箱即用的行为是删除任何尾随换行符。
-
顺便说一句,也许你想要
File=$(<"$first")$'\n'$(<"$second")?仅限 Bash,但执行速度要快得多(不需要任何/usr/bin/cat可执行文件,但仅使用 shell 的内置函数运行)。 -
...要明确:这不是
cat删除你的换行符。是命令替换 --$(...)-- 修剪它们,即使cat包含它们。