You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bash中用冒号拼接变量异常:调换顺序后变量内容丢失

问题原因

文件首行末尾包含回车符(\r),当输出$first_line:$file时,\r会把光标重置到行开头,后续输出的:./my_dir/file.md会覆盖掉前面的日期内容,导致视觉上日期“丢失”。

解决办法

获取首行内容时去除末尾的回车符即可,以下是几种可行方案:

  • 使用tr命令删除回车符:
for file in ./my_dir/*; do
    first_line=$(head -n 1 "$file" | tr -d '\r')
    echo "$first_line:$file"
done
  • 使用sed命令移除行尾回车:
for file in ./my_dir/*; do
    first_line=$(head -n 1 "$file" | sed 's/\r$//')
    echo "$first_line:$file"
done
  • 使用bash参数扩展去除末尾控制字符(需bash 4.2及以上版本):
for file in ./my_dir/*; do
    first_line=$(head -n 1 "$file")
    first_line=${first_line%$'\r'}
    echo "$first_line:$file"
done

内容的提问来源于stack exchange,提问作者DoneForAiur

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 21:12:04