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

Shell脚本读取文件关联目标文件逐行输出指定格式内容的问题求助

问题原因

你的脚本存在两个核心问题:

  1. STRING=$(paste $file1.breed.txt)会一次性读取对应品种文件的全部内容,保留了文件内部的换行符,所以输出时只有第一行能拼接前缀,剩余行直接单独换行输出
  2. 仅实现了外层遍历宠物类型(dog、cat)的逻辑,没有添加遍历每个类型下所有品种的内层循环,同时外层变量和循环变量重名(都叫file1),也容易引发逻辑异常

解决方案

方案1:双层循环实现(适合新手理解)

修改后的脚本如下:

#!/bin/bash
pet_list="pet_list.txt"
# 外层循环遍历所有宠物类型
while read -r pet_type; do
  # 内层循环遍历当前宠物类型的所有品种
  while read -r breed; do
    echo "My pet is a $pet_type and the breed is $breed"
  done < "${pet_type}.breed.txt"
done < "$pet_list"

方案2:awk简洁实现

如果不需要复杂逻辑,也可以用awk一行命令实现效果:

awk 'FNR==NR{type[$0];next} {split(FILENAME, arr, "."); print "My pet is a "arr[1]" and the breed is "$0}' pet_list.txt *.breed.txt

两种方案运行后都可以得到你需要的预期输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 17:27:01