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

Bash while read循环变量解析异常及文件检测失效问题

问题

我有一个仅包含文本行的csv文件test_list(实际文件名为test_list.csv),内容为test_name_1、test_name_2。需要检测每个test_name对应的./$test_name/$test_name.txt文件是否存在,不存在则输出提示。

在MINGW64 shell中执行while read循环代码后,echo $test_name输出正常,但路径解析出现错乱,明明实际存在的文件却被提示找不到。单独在shell中声明test_name="test_name_1"测试循环内的代码,echo输出和条件判断均正常,推测问题出在while read循环对$test_name的解析逻辑上。

修复方案

经排查,问题根源是csv文件中存在不可见的\r字符(可通过od -c "$test_list"命令检测),这导致文件存在性检测-f失效,同时引发路径解析错乱。可通过dos2unix $test_list命令修复文件格式。

另外,为避免文件最后一行未换行时读取失败,需统一while read循环中的变量名,并添加兜底判断。修复后的可用代码如下:

dos2unix $test_list
while read -r line || [ -n "$line" ]; do 
    echo $line
    if [ ! -f "./$line/$line.tst" ]; then
        echo "$(pwd)/$line/$line.tst not found! Check for any typo in the file name."
    fi  
done < $test_list

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 06:57:09