停止在逗号前插入换行符
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
我在 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