停止在逗号前插入换行符

Stop inserting newline before comma

我在 MacOS Catalina 上有一个 bash 脚本 运行。该脚本将行附加到 csv 文件,但似乎在逗号前插入了新行。

在脚本中,当我成功完成一个步骤时,我想通过添加 id 和“成功”一词将其记录在 csv 中。

log=results.log
id=474651680

echo $id,success >> $log

我希望文件包含:

474651680,success

但文件包含:

474651680
,success

我不明白为什么要插入这个换行符。

尝试添加

set -e # exit on erro
set -x # show debug level info in console

当您在终端中 运行 您的脚本时,您将能够看到幕后发生的事情。

也尝试使用:"${variableName}" 而不仅仅是 $variableName

对于你的情况,我会尝试:

echo "${id},success" >> $log

另外,似乎有一个新行被包含在您设置为 id 的变量中。很可能是您的编辑在这样做。

id

中肯定有一个换行符

使用 bash 的 "suffix removal" and "ANSI-C quoting" 功能去除它:

echo "${id%$'\n'},success" >> $log

解释:

  • ${id} 等同于 $id
  • $'\n' 将字符串 "\n" 转换为换行符
  • ${id%suffix} 输出 $id,删除 suffix