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

Shell执行for循环+cut命令报错:No such file or directory

问题分析与解决

你的代码存在两处核心问题:

  • for i in \cat $file`` 会把文件内容按空格分割成多个片段,而非逐行读取,导致每个片段被错误当作文件名处理。
  • \cut -d ',' -f 2- $i` 是把cut的输出当作命令执行,而非直接输出结果,再加上$i`被当成文件名传入,才会触发“没有该文件或目录”的错误。

最简解决方案

如果只是要提取每行从第2列开始的内容,完全不需要循环,直接用cut处理整个文件即可:

cut -d ',' -f 2- "$file"

需逐行处理时的写法

如果后续还要对每行做其他操作,用while read实现逐行读取更可靠:

while IFS= read -r line
do
    echo "$line" | cut -d ',' -f 2-
done < "$file"

关键说明

  • cut -d ',' -f 2- "$file":-d ','指定逗号为列分隔符,-f 2-表示提取第2列到最后一列的内容,直接作用于整个文件效率更高。
  • while IFS= read -r line:IFS=避免行首行尾的空格被截断,-r禁止反斜线转义,确保正确读取含特殊字符的行;通过< "$file"将文件内容作为read的输入,实现逐行读取。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 06:01:04