【发布时间】:2020-05-05 08:34:31
【问题描述】:
我有一个简单的 shell 脚本,可以读取我上传的文件日志,我想输出文件大小和行数(CSV 标头少一个)。我循环正确,但是当我尝试使用 find、wc 或 stat 来获取文件的大小时,它会出现“没有这样的文件或目录”的错误。当我在终端中尝试相同的命令时,它会按预期返回大小。
fileSizeBytes=$(sudo wc -c "$fileName" | awk {'print $1'})
fileSizeKb=$((fileSizeBytes/1024))
lineCount=$(sudo wc -l "$fileName" | awk {'print $1'})
lineCount=$(($lineCount-1))
fileName 变量包含文件的完整路径,我检查了所有用户是否具有读/写访问权限。无论我是使用我的帐户还是以 root 身份运行脚本,结果都是一样的。
wc: /plan/files/Today.csv: No such file or directory
wc: /plan/files/Today.csv: No such file or directory
wc: /plan/files/ERMS_STOCK_05052020.csv: No such file or directory
wc: /plan/files/ERMS_STOCK_05052020.csv: No such file or directory
wc: /plan/files/ERMS_RES_05052020.csv: No such file or directory
wc: /plan/files/ERMS_RES_05052020.csv: No such file or directory
任何想法可能导致这种情况?我可以在我的 Mac 上使用类似的脚本(必须更改一些命令),但在我的 RHEL 7.7 VM 上我遇到了这个错误。
干杯
【问题讨论】:
-
文件是否存在?
Any ideas what might be causing this?文件可能不存在。您发布了 6 条错误消息,但您发布的代码仅取决于您发布的代码中未设置的某个变量fileName。您手动更改fileName?fileName是怎么改的? -
你真的有一个
/plan/...的绝对路径,而plan不在根目录下? -
是的,根目录下有一个目录 /plan/,我在其中创建了 /files 目录来存储上传文件。文件在那里,如果我运行“wc -c /plan/files/ERMS_STOCK_05052020.csv”,我会得到我期望的输出,但是当脚本执行时,我会得到没有这样的文件错误。我正在使用 sed 从上传文件列表中提取路径和文件名,并分配给变量 fileName。
-
您的文件是否来自 Windows?还是距离 Windows 不到 2 米?
-
据我所知,这些文件只存在于 *nix 上。他们一直在 RHEL 和 Mac 上,但如果他们一直在 Win 上,你会建议什么?在这一点上,我非常愿意尝试任何事情。自从我在过去 9 天将它迁移到 RHEL 以来,我一直在以一种或另一种形式处理这个脚本中的错误。