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

变量存储文件执行sed删除操作时提示「无此文件或目录」求助

解决脚本执行「No such file or directory」问题的分步指南

兄弟我太懂这种卡到想放弃Linux的心情了!3小时耗在这种细节上确实糟心,咱们来一步步把问题拆解开,搞定它:

你的脚本里的3个关键错误

  • 循环遍历的写法错误:你用for i in $file1,$file2时,逗号会被shell当成文件名的一部分,它会尝试去查找./file1,./file2这个不存在的文件,自然报“找不到”的错误。正确的写法应该是用空格分隔两个文件名,并且给变量加双引号(避免文件名有空格时出问题)。
  • sed的变量解析问题:单引号''里的内容会被shell原样传递给sed,所以'/$text/d'里的$text不会被解析成你定义的"searched text",sed会去查找字面量$text。要改成双引号""让shell解析变量。
  • 循环语法缺失分隔符:$i后面没有加;或者换行,shell会把done当成命令的一部分,语法直接报错,这也会影响脚本执行。

修正后的完整脚本

file1="./file1"
file2="./file2"
text="searched text"

for i in "$file1" "$file2"; do
  sed -i.txt "/$text/d" "$i"
done

额外说明

  • sed -i.txt会给每个处理的文件生成一个.txt后缀的备份(比如file1.txt是原file1的备份),如果不需要备份,可以直接用sed -i "/$text/d" "$i",但建议保留备份防止误删重要内容。
  • 给变量和文件名加双引号是好习惯,能避免文件名含空格、特殊字符时出现意外问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:58:33