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

Jetson Nano中复制Shell脚本内容生成文件异常的排查

复制Shell脚本内容后出现“目录未找到”错误的排查与解决

额外字节的来源

最常见的原因是换行符格式差异:原脚本A.sh是Linux系统的LF(\n)换行,而你通过编辑器复制粘贴后,新文件B.sh被转换成了Windows风格的CRLF(\r\n)换行。每个换行多了一个\r字节,866-857=9字节的差值,刚好对应9个换行位置多出来的\r字符。

这些额外的\r会被Shell当成路径的一部分,比如原本的./target_dir会变成./target_dir\r,系统自然找不到这个带特殊字符的目录,从而抛出“目录未找到”错误。

修复方法

  • 使用dos2unix工具转换格式:
    dos2unix B.sh
    
    这个命令会直接将文件中的CRLF换行替换为LF,转换后文件大小应该和原脚本一致。
  • 在编辑器中手动设置换行格式:
    大多数编辑器(如VS Code、Vim)都支持切换换行符类型。比如在VS Code右下角点击当前换行符标识(显示“CRLF”),选择“LF”后保存;Vim中可以执行:set fileformat=unix再执行:w保存。
  • 用sed命令批量去除\r字符:
    sed -i 's/\r$//' B.sh
    
    这个命令会删除每行末尾的\r字符,快速修复换行符问题。

其他可能的原因

  • 不可见字符或额外空格:复制粘贴时可能不小心带入了编辑器界面的空白区域、或者粘贴后编辑器自动添加了多余空格,导致脚本中的路径、命令参数出现无效字符,引发错误。可以用cat -A B.sh查看文件中的不可见字符,对比cat -A A.sh找出差异。
  • UTF-8 BOM头:部分编辑器保存文件时会自动添加UTF-8 BOM头(3个字节的EF BB BF),这会导致脚本的Shebang行(#!/bin/bash)被破坏,系统无法正确识别脚本解释器,间接引发类似路径错误的异常。可以用hexdump -C B.sh | head查看文件开头是否有BOM字节。
  • 编辑器自动格式化:如果编辑器开启了自动格式化功能,可能会修改脚本中的缩进、空格甚至路径字符串(比如把长路径换行拆分),导致脚本逻辑出错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 22:05:51